diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..5f5ce7513 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +.eslintrc.js +dist \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 000000000..85201f455 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,24 @@ +module.exports = { + "env": { + "browser": true, + "es2021": true + }, + globals: { + 'luxon': 'readonly', + 'XLSX': 'readonly', + 'jspdf': 'readonly' + }, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": ["only-warn"], + "rules": { + "semi": "error", + "indent": ["error", "tab"], + "no-unused-vars": ["warn", { "vars": "all", "args": "none", "ignoreRestSiblings": false }], + "no-fallthrough": "off", + "no-inner-declarations": "off", + } +} diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 88f2c69f2..a2abe7b72 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -10,7 +10,7 @@ assignees: '' @@ -23,8 +23,9 @@ A clear and concise description of what the bug is. **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. - diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 256225f7c..608a5218f 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -8,7 +8,7 @@ assignees: '' --- *Is your feature request related to a problem? Please describe.** diff --git a/.github/workflows/bad-files-check.yml b/.github/workflows/bad-files-check.yml new file mode 100644 index 000000000..4ccebd183 --- /dev/null +++ b/.github/workflows/bad-files-check.yml @@ -0,0 +1,39 @@ +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/.github/workflows/lint-and-test.yml b/.github/workflows/lint-and-test.yml new file mode 100644 index 000000000..ef85a4749 --- /dev/null +++ b/.github/workflows/lint-and-test.yml @@ -0,0 +1,31 @@ +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/bower.json b/bower.json index af7afc3fc..92578cfac 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "tabulator", "main": "dist/js/tabulator.js", - "version": "5.1.7", + "version": "5.2.2", "description": "Interactive table generation JavaScript library", "keywords": [ "table", diff --git a/dist/css/tabulator.css b/dist/css/tabulator.css index 1d6092572..3dde4a7d8 100644 --- a/dist/css/tabulator.css +++ b/dist/css/tabulator.css @@ -68,11 +68,11 @@ padding: 4px; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { +.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-menu-button:hover { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { cursor: pointer; opacity: .6; } @@ -98,7 +98,7 @@ background: #fff; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { width: calc(100% - 22px); } @@ -127,10 +127,6 @@ margin-right: -1px; } -.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator .tabulator-header .tabulator-col .tabulator-header-filter { position: relative; box-sizing: border-box; @@ -415,23 +411,25 @@ } .tabulator .tabulator-col-resize-handle { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 5px; -} - -.tabulator .tabulator-col-resize-handle.prev { - left: 0; - right: auto; + position: relative; + display: inline-block; + width: 6px; + margin-left: -3px; + margin-right: -3px; + z-index: 10; + vertical-align: middle; } .tabulator .tabulator-col-resize-handle:hover { cursor: ew-resize; } -.tabulator .tabulator-loader { +.tabulator .tabulator-col-resize-handle:last-of-type { + width: 3px; + margin-right: 0; +} + +.tabulator .tabulator-alert { position: absolute; display: flex; align-items: center; @@ -444,7 +442,7 @@ text-align: center; } -.tabulator .tabulator-loader .tabulator-loader-msg { +.tabulator .tabulator-alert .tabulator-alert-msg { display: inline-block; margin: 0 auto; padding: 10px 20px; @@ -454,12 +452,12 @@ font-size: 16px; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { border: 4px solid #333; color: #000; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { border: 4px solid #D00; color: #590000; } @@ -579,6 +577,7 @@ .tabulator-row .tabulator-cell.tabulator-editing select { border: 1px; background: transparent; + outline: none; } .tabulator-row .tabulator-cell.tabulator-validation-fail { @@ -592,10 +591,6 @@ color: #dd0000; } -.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator-row .tabulator-cell.tabulator-row-handle { display: inline-flex; align-items: center; @@ -790,7 +785,7 @@ color: #d00; } -.tabulator-menu { +.tabulator-popup-container { position: absolute; display: inline-block; box-sizing: border-box; @@ -803,6 +798,20 @@ 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; @@ -842,50 +851,45 @@ border-top: 1px solid #aaa; } -.tabulator-edit-select-list { - position: absolute; - display: inline-block; - box-sizing: border-box; +.tabulator-edit-list { max-height: 200px; - background: #fff; - border: 1px solid #aaa; font-size: 14px; overflow-y: auto; -webkit-overflow-scrolling: touch; - z-index: 10000; } -.tabulator-edit-select-list .tabulator-edit-select-list-item { +.tabulator-edit-list .tabulator-edit-list-item { padding: 4px; color: #333; + outline: none; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { +.tabulator-edit-list .tabulator-edit-list-item.active { color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { +.tabulator-edit-list .tabulator-edit-list-item.active.focused { outline: 1px solid rgba(255, 255, 255, 0.5); } -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { +.tabulator-edit-list .tabulator-edit-list-item.focused { outline: 1px solid #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { +.tabulator-edit-list .tabulator-edit-list-item:hover { cursor: pointer; color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-notice { +.tabulator-edit-list .tabulator-edit-list-placeholder { padding: 4px; color: #333; text-align: center; } -.tabulator-edit-select-list .tabulator-edit-select-list-group { +.tabulator-edit-list .tabulator-edit-list-group { border-bottom: 1px solid #aaa; padding: 4px; padding-top: 6px; @@ -893,6 +897,26 @@ 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; } @@ -942,17 +966,6 @@ margin-left: 5px; } -.tabulator.tabulator-rtl .tabulator-col-resize-handle { - position: absolute; - left: 0; - right: auto; -} - -.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { - right: 0; - left: auto; -} - .tabulator-print-fullscreen { position: absolute; top: 0; diff --git a/dist/css/tabulator.css.map b/dist/css/tabulator.css.map index 3a22746cd..e3e305615 100644 --- a/dist/css/tabulator.css.map +++ b/dist/css/tabulator.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #f3f3f3 !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #aaa;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #f3f3f3 !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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/dist/css/tabulator.min.css b/dist/css/tabulator.min.css index adbbe8941..319a8830c 100644 --- a/dist/css/tabulator.min.css +++ b/dist/css/tabulator.min.css @@ -1,2 +1,2 @@ -.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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev{display:none}.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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#cdcdcd}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#f3f3f3!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:700;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:calc(100% + 20px);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{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{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}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.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}.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}.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{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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-menu{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,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.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}.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-color:#aaa;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:6px 4px 4px;color:#333;font-weight:700}.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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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{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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#cdcdcd}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#f3f3f3!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:700;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:calc(100% + 20px);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{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(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:10;vertical-align:middle}.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,.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:700;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}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.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}.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 #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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,.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}.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-color:#aaa;border-style:solid;border-width:1px 1px 0 0;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 hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}.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:6px 4px 4px;color:#333;font-weight:700}.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{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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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.min.css.map */ \ No newline at end of file diff --git a/dist/css/tabulator.min.css.map b/dist/css/tabulator.min.css.map index b71af8a80..7a4c3f28f 100644 --- a/dist/css/tabulator.min.css.map +++ b/dist/css/tabulator.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"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","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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #f3f3f3 !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #aaa;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 +{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"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","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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #f3f3f3 !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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/dist/css/tabulator_bootstrap3.css b/dist/css/tabulator_bootstrap3.css index d29f0d190..b6cfaa33b 100644 --- a/dist/css/tabulator_bootstrap3.css +++ b/dist/css/tabulator_bootstrap3.css @@ -68,11 +68,11 @@ padding: 4px; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { +.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-menu-button:hover { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { cursor: pointer; opacity: .6; } @@ -98,7 +98,7 @@ background: #fff; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { width: calc(100% - 22px); } @@ -127,10 +127,6 @@ margin-right: -1px; } -.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator .tabulator-header .tabulator-col .tabulator-header-filter { position: relative; box-sizing: border-box; @@ -415,23 +411,25 @@ } .tabulator .tabulator-col-resize-handle { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 5px; -} - -.tabulator .tabulator-col-resize-handle.prev { - left: 0; - right: auto; + position: relative; + display: inline-block; + width: 6px; + margin-left: -3px; + margin-right: -3px; + z-index: 10; + vertical-align: middle; } .tabulator .tabulator-col-resize-handle:hover { cursor: ew-resize; } -.tabulator .tabulator-loader { +.tabulator .tabulator-col-resize-handle:last-of-type { + width: 3px; + margin-right: 0; +} + +.tabulator .tabulator-alert { position: absolute; display: flex; align-items: center; @@ -444,7 +442,7 @@ text-align: center; } -.tabulator .tabulator-loader .tabulator-loader-msg { +.tabulator .tabulator-alert .tabulator-alert-msg { display: inline-block; margin: 0 auto; padding: 10px 20px; @@ -454,12 +452,12 @@ font-size: 16px; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { border: 4px solid #333; color: #000; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { border: 4px solid #D00; color: #590000; } @@ -579,6 +577,7 @@ .tabulator-row .tabulator-cell.tabulator-editing select { border: 1px; background: transparent; + outline: none; } .tabulator-row .tabulator-cell.tabulator-validation-fail { @@ -592,10 +591,6 @@ color: #dd0000; } -.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator-row .tabulator-cell.tabulator-row-handle { display: inline-flex; align-items: center; @@ -790,7 +785,7 @@ color: #d00; } -.tabulator-menu { +.tabulator-popup-container { position: absolute; display: inline-block; box-sizing: border-box; @@ -803,6 +798,20 @@ 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; @@ -842,50 +851,45 @@ border-top: 1px solid #ddd; } -.tabulator-edit-select-list { - position: absolute; - display: inline-block; - box-sizing: border-box; +.tabulator-edit-list { max-height: 200px; - background: #fff; - border: 1px solid #ddd; font-size: 14px; overflow-y: auto; -webkit-overflow-scrolling: touch; - z-index: 10000; } -.tabulator-edit-select-list .tabulator-edit-select-list-item { +.tabulator-edit-list .tabulator-edit-list-item { padding: 4px; color: #333; + outline: none; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { +.tabulator-edit-list .tabulator-edit-list-item.active { color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { +.tabulator-edit-list .tabulator-edit-list-item.active.focused { outline: 1px solid rgba(255, 255, 255, 0.5); } -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { +.tabulator-edit-list .tabulator-edit-list-item.focused { outline: 1px solid #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { +.tabulator-edit-list .tabulator-edit-list-item:hover { cursor: pointer; color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-notice { +.tabulator-edit-list .tabulator-edit-list-placeholder { padding: 4px; color: #333; text-align: center; } -.tabulator-edit-select-list .tabulator-edit-select-list-group { +.tabulator-edit-list .tabulator-edit-list-group { border-bottom: 1px solid #ddd; padding: 4px; padding-top: 6px; @@ -893,6 +897,26 @@ 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; } @@ -942,17 +966,6 @@ margin-left: 5px; } -.tabulator.tabulator-rtl .tabulator-col-resize-handle { - position: absolute; - left: 0; - right: auto; -} - -.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { - right: 0; - left: auto; -} - .tabulator-print-fullscreen { position: absolute; top: 0; diff --git a/dist/css/tabulator_bootstrap3.css.map b/dist/css/tabulator_bootstrap3.css.map index 45ddfb905..ddd0d5a8e 100644 --- a/dist/css/tabulator_bootstrap3.css.map +++ b/dist/css/tabulator_bootstrap3.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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:nth-child(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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\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 +{"version":3,"sources":["tabulator_bootstrap3.scss"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,sBAAsB;EACtB,sBAAsB;EACtB,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,gCAAgC;EAChC,6BAA6B;EAC7B,4BAA4B;EAC5B,2BAA2B;EAC3B,wBAAwB;AAAE;;AAC1B;EACE,eAAe;AAAE;;AACnB;EACE,qBAAqB;AAAE;;AACzB;EACE,iBAAiB;AAAE;;AACrB;EACE,kBAAkB;EAClB,sBAAsB;EACtB,WAAW;EACX,6BAA6B;EAC7B,sBAAsB;EACtB,WAAW;EACX,iBAAiB;EACjB,mBAAmB;EACnB,gBAAgB;EAChB,sBAAsB;EACtB,wBAAwB;EACxB,yBAAyB;EACzB,oBAAoB;AAAE;;AACtB;EACE,aAAa;AAAE;;AACjB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,sBAAsB;EACtB,4BAA4B;EAC5B,gBAAgB;EAChB,gBAAgB;EAChB,sBAAsB;EACtB,gBAAgB;AAAE;;AAClB;EACE,kBAAkB;EAClB,sBAAsB;EACtB,mBAAmB;EACnB,oBAAoB;AAAE;;AACxB;EACE,sBAAsB;EACtB,kBAAkB;EAClB,YAAY;AAAE;;AACd;EACE,cAAc;AAAE;;AAChB;EACE,eAAe;EACf,WAAW;AAAE;;AACjB;EACE,kBAAkB;AAAE;;AACtB;EACE,sBAAsB;EACtB,WAAW;EACX,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;EACvB,sBAAsB;AAAE;;AACxB;EACE,sBAAsB;EACtB,WAAW;EACX,sBAAsB;EACtB,YAAY;EACZ,gBAAgB;AAAE;;AACpB;EACE,wBAAwB;AAAE;;AAC9B;EACE,aAAa;EACb,mBAAmB;EACnB,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,UAAU;AAAE;;AACZ;EACE,QAAQ;EACR,SAAS;EACT,kCAAkC;EAClC,mCAAmC;EACnC,6BAA6B;AAAE;;AACrC;EACE,kBAAkB;EAClB,aAAa;EACb,0BAA0B;EAC1B,gBAAgB;EAChB,kBAAkB;AAAE;;AACtB;EACE,kBAAkB;EAClB,sBAAsB;EACtB,eAAe;EACf,WAAW;EACX,kBAAkB;AAAE;;AACpB;EACE,uBAAuB;AAAE;;AAC3B;EACE,eAAe;AAAE;;AACnB;EACE,QAAQ;EACR,SAAS;AAAE;;AACf;EACE,mBAAmB;AAAE;;AACvB;EACE,eAAe;EACf,yBAAyB;AAAE;;AAC7B;EACE,WAAW;AAAE;;AACb;EACE,gBAAgB;EAChB,6BAA6B;AAAE;;AACnC;EACE,WAAW;AAAE;;AACb;EACE,gBAAgB;EAChB,6BAA6B;AAAE;;AACnC;EACE,WAAW;AAAE;;AACb;EACE,mBAAmB;EACnB,0BAA0B;EAC1B,WAAW;AAAE;;AACjB;EACE,yBAAyB;EACzB,uBAAuB;EACvB,aAAa;EACb,mBAAmB;EACnB,uBAAuB;AAAE;;AAC3B;EACE,yBAAyB;AAAE;;AAC7B;EACE,gBAAgB;EAChB,iBAAiB;AAAE;;AACrB;EACE,gBAAgB;EAChB,oBAAoB;AAAE;;AACxB;EACE,uBAAuB;EACvB,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,YAAY;AAAE;;AAClB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;AAAE;;AACb;EACE,4BAA4B;AAAE;;AAChC;EACE,2BAA2B;AAAE;;AACjC;EACE,sBAAsB;EACtB,eAAe;EACf,4BAA4B;EAC5B,0BAA0B;EAC1B,6BAA6B;EAC7B,gBAAgB;AAAE;;AAClB;EACE,4BAA4B;AAAE;;AAC9B;EACE,aAAa;AAAE;;AACrB;EACE,eAAe;AAAE;;AACjB;EACE,aAAa;AAAE;;AACrB;EACE,kBAAkB;EAClB,WAAW;EACX,mBAAmB;EACnB,cAAc;EACd,iCAAiC;AAAE;;AACnC;EACE,aAAa;AAAE;;AACjB;EACE,sBAAsB;EACtB,aAAa;EACb,mBAAmB;EACnB,WAAW;AAAE;;AACb;EACE,gBAAgB;EAChB,eAAe;AAAE;;AACnB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,WAAW;EACX,iBAAiB;EACjB,eAAe;EACf,mBAAmB;AAAE;;AACzB;EACE,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,mBAAmB;EACnB,iBAAiB;EACjB,WAAW;AAAE;;AACb;EACE,iBAAiB;EACjB,8BAA8B;AAAE;;AAChC;EACE,6BAA6B;AAAE;;AACjC;EACE,0BAA0B;AAAE;;AACpC;EACE,0BAA0B;EAC1B,yBAAyB;EACzB,WAAW;EACX,iBAAiB;EACjB,mBAAmB;EACnB,iBAAiB;EACjB,sBAAsB;EACtB,wBAAwB;EACxB,yBAAyB;EACzB,oBAAoB;AAAE;;AACtB;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,8BAA8B;EAC9B,iBAAiB;AAAE;;AACnB;EACE,aAAa;AAAE;;AACnB;EACE,sBAAsB;EACtB,wBAAwB;EACxB,gBAAgB;EAChB,8BAA8B;EAC9B,6BAA6B;EAC7B,0BAA0B;EAC1B,gBAAgB;AAAE;;AAClB;EACE,8BAA8B;AAAE;;AAChC;EACE,aAAa;AAAE;;AACnB;EACE,mBAAmB;EACnB,mBAAmB;AAAE;;AACzB;EACE,iBAAiB;AAAE;;AACrB;EACE,mBAAmB;AAAE;;AACvB;EACE,OAAO;EACP,iBAAiB;EACjB,WAAW;EACX,oBAAoB;EACpB,oBAAoB;EACpB,kBAAkB;AAAE;;AACtB;EACE,qBAAqB;EACrB,aAAa;EACb,gBAAgB;EAChB,sBAAsB;EACtB,kBAAkB;AAAE;;AACtB;EACE,aAAa;AAAE;;AACjB;EACE,qBAAqB;EACrB,aAAa;EACb,gBAAgB;EAChB,sBAAsB;EACtB,kBAAkB;EAClB,oCAAoC;AAAE;;AACtC;EACE,WAAW;AAAE;;AACf;EACE,WAAW;AAAE;;AACf;EACE,eAAe;EACf,8BAA8B;EAC9B,WAAW;AAAE;;AACnB;EACE,kBAAkB;EAClB,qBAAqB;EACrB,UAAU;EACV,iBAAiB;EACjB,kBAAkB;EAClB,WAAW;EACX,sBAAsB;AAAE;;AACxB;EACE,iBAAiB;AAAE;;AACrB;EACE,UAAU;EACV,eAAe;AAAE;;AACrB;EACE,kBAAkB;EAClB,aAAa;EACb,mBAAmB;EACnB,MAAM;EACN,OAAO;EACP,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,8BAA8B;EAC9B,kBAAkB;AAAE;;AACpB;EACE,qBAAqB;EACrB,cAAc;EACd,kBAAkB;EAClB,mBAAmB;EACnB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;AAAE;;AACjB;EACE,sBAAsB;EACtB,WAAW;AAAE;;AACf;EACE,sBAAsB;EACtB,cAAc;AAAE;;AAExB;EACE,kBAAkB;EAClB,sBAAsB;EACtB,gBAAgB;EAChB,sBAAsB;AAAE;;AACxB;EACE,yBAAyB;AAAE;;AAC7B;EACE,yBAAyB;EACzB,eAAe;AAAE;;AACnB;EACE,yBAAyB;AAAE;;AAC7B;EACE,yBAAyB;EACzB,eAAe;AAAE;;AACnB;EACE,sBAAsB;EACtB,gBAAgB;AAAE;;AACpB;EACE,kBAAkB;EAClB,0BAA0B;EAC1B,6BAA6B;EAC7B,oBAAoB;EACpB,WAAW;AAAE;;AACf;EACE,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,OAAO;EACP,WAAW;AAAE;;AACb;EACE,MAAM;EACN,YAAY;AAAE;;AAChB;EACE,iBAAiB;AAAE;;AACvB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,yBAAyB;EACzB,WAAW;AAAE;;AACb;EACE,4BAA4B;AAAE;;AAChC;EACE,2BAA2B;AAAE;;AACjC;EACE,sBAAsB;EACtB,YAAY;EACZ,0BAA0B;EAC1B,6BAA6B;AAAE;;AAC/B;EACE,aAAa;AAAE;;AACjB;EACE,eAAe;AAAE;;AACjB;EACE,kBAAkB;AAAE;;AACpB;EACE,mBAAmB;AAAE;;AAC7B;EACE,qBAAqB;EACrB,kBAAkB;EAClB,sBAAsB;EACtB,YAAY;EACZ,4BAA4B;EAC5B,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AAAE;;AACzB;EACE,yBAAyB;EACzB,aAAa;EACb,UAAU;AAAE;;AACZ;;EACE,WAAW;EACX,uBAAuB;EACvB,aAAa;AAAE;;AACnB;EACE,yBAAyB;AAAE;;AAC3B;;EACE,WAAW;EACX,uBAAuB;EACvB,cAAc;AAAE;;AACpB;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,wBAAwB;EACxB,yBAAyB;EACzB,oBAAoB;AAAE;;AACtB;EACE,UAAU;AAAE;;AACZ;EACE,WAAW;EACX,WAAW;EACX,eAAe;EACf,gBAAgB;AAAE;;AACxB;EACE,qBAAqB;EACrB,sBAAsB;EACtB,WAAW;EACX,UAAU;EACV,gBAAgB;EAChB,iBAAiB;EACjB,8BAA8B;EAC9B,2BAA2B;EAC3B,6BAA6B;AAAE;;AACjC;EACE,oBAAoB;EACpB,uBAAuB;EACvB,mBAAmB;EACnB,sBAAsB;EACtB,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,sBAAsB;EACtB,kBAAkB;EAClB,8BAA8B;EAC9B,gBAAgB;AAAE;;AAClB;EACE,eAAe;EACf,8BAA8B;AAAE;;AAClC;EACE,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,uBAAuB;AAAE;;AACzB;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,QAAQ;EACR,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AACtB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AAClB;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,QAAQ;EACR,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AACxB;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,wBAAwB;EACxB,yBAAyB;EACzB,oBAAoB;EACpB,YAAY;EACZ,WAAW;EACX,mBAAmB;EACnB,gBAAgB;EAChB,WAAW;EACX,iBAAiB;EACjB,gBAAgB;AAAE;;AAClB;EACE,WAAW;AAAE;;AACf;EACE,gBAAgB;AAAE;;AACpB;EACE,aAAa;AAAE;;AACjB;EACE,aAAa;AAAE;;AACnB;EACE,qBAAqB;EACrB,YAAY;EACZ,WAAW;EACX,mBAAmB;AAAE;;AACzB;EACE,sBAAsB;EACtB,6BAA6B;EAC7B,4BAA4B;EAC5B,0BAA0B;EAC1B,YAAY;EACZ,kBAAkB;EAClB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;AAAE;;AACjB;EACE,eAAe;EACf,oCAAoC;AAAE;;AACxC;EACE,kBAAkB;EAClB,kCAAkC;EAClC,mCAAmC;EACnC,0BAA0B;EAC1B,gBAAgB;AAAE;;AACpB;EACE,kBAAkB;AAAE;;AACtB;EACE,kBAAkB;AAAE;;AACtB;EACE,kBAAkB;AAAE;;AACtB;EACE,kBAAkB;AAAE;;AACtB;EACE,mBAAmB;AAAE;;AACvB;EACE,qBAAqB;AAAE;;AACzB;EACE,qBAAqB;EACrB,QAAQ;EACR,SAAS;EACT,kBAAkB;EAClB,iCAAiC;EACjC,oCAAoC;EACpC,eAAe;EACf,2BAA2B;EAC3B,sBAAsB;AAAE;;AAC1B;EACE,iBAAiB;EACjB,WAAW;AAAE;;AAEnB;EACE,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,gBAAgB;EAChB,sBAAsB;EACtB,wCAAwC;EACxC,eAAe;EACf,gBAAgB;EAChB,iCAAiC;EACjC,cAAc;AAAE;;AAElB;EACE,YAAY;EACZ,kBAAkB;AAAE;;AAEtB;EACE,2BAA2B;EAC3B,gBAAgB;EAChB,kBAAkB;EAClB,gBAAgB;EAChB,eAAe;EACf,oBAAoB;AAAE;;AAExB;EACE,kBAAkB;EAClB,sBAAsB;EACtB,iBAAiB;EACjB,iBAAiB;AAAE;;AACnB;EACE,WAAW;AAAE;;AACf;EACE,eAAe;EACf,mBAAmB;AAAE;;AACvB;EACE,mBAAmB;AAAE;;AACrB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,qBAAqB;EACrB,WAAW;EACX,WAAW;EACX,UAAU;EACV,WAAW;EACX,yBAAyB;EACzB,mBAAmB;EACnB,kBAAkB;EAClB,mBAAmB;EACnB,wBAAwB;AAAE;;AAEhC;EACE,0BAA0B;AAAE;;AAE9B;EACE,iBAAiB;EACjB,eAAe;EACf,gBAAgB;EAChB,iCAAiC;AAAE;;AACnC;EACE,YAAY;EACZ,WAAW;EACX,aAAa;AAAE;;AACf;EACE,WAAW;EACX,mBAAmB;AAAE;;AACrB;EACE,2CAA2C;AAAE;;AACjD;EACE,0BAA0B;AAAE;;AAC9B;EACE,eAAe;EACf,WAAW;EACX,mBAAmB;AAAE;;AACzB;EACE,YAAY;EACZ,WAAW;EACX,kBAAkB;AAAE;;AACtB;EACE,6BAA6B;EAC7B,YAAY;EACZ,gBAAgB;EAChB,WAAW;EACX,iBAAiB;AAAE;;AACrB;;EACE,kBAAkB;AAAE;;AACtB;;EACE,kBAAkB;AAAE;;AACtB;;EACE,kBAAkB;AAAE;;AACtB;;EACE,kBAAkB;AAAE;;AAExB;EACE,cAAc;AAAE;;AAElB;EACE,mBAAmB;EACnB,cAAc;AAAE;;AAChB;EACE,mBAAmB;EACnB,2BAA2B;EAC3B,qBAAqB;AAAE;;AACvB;EACE,qBAAqB;EACrB,iBAAiB;AAAE;;AACrB;EACE,gBAAgB;EAChB,kBAAkB;AAAE;;AACtB;EACE,SAAS;EACT,cAAc;AAAE;;AACpB;EACE,qBAAqB;EACrB,2BAA2B;AAAE;;AAC7B;EACE,qBAAqB;EACrB,gBAAgB;EAChB,kCAAkC;EAClC,+BAA+B;EAC/B,oBAAoB;EACpB,4BAA4B;AAAE;;AAChC;EACE,qBAAqB;EACrB,gBAAgB;AAAE;;AAExB;EACE,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,OAAO;EACP,QAAQ;EACR,cAAc;AAAE;;AAElB;EACE,wBAAwB;AAAE;;AAE5B;EACE,yBAAyB;AAAE;;AAC3B;EACE,qBAAqB;EACrB,sBAAsB;EACtB,WAAW;EACX,UAAU;EACV,gBAAgB;EAChB,iBAAiB;EACjB,8BAA8B;EAC9B,2BAA2B;EAC3B,6BAA6B;AAAE;;AACjC;EACE,sBAAsB;EACtB,6BAA6B;EAC7B,4BAA4B;EAC5B,0BAA0B;EAC1B,YAAY;EACZ,kBAAkB;EAClB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;AAAE;;AACjB;EACE,eAAe;EACf,oCAAoC;AAAE;;AACxC;EACE,kBAAkB;EAClB,kCAAkC;EAClC,mCAAmC;EACnC,0BAA0B;EAC1B,gBAAgB;AAAE;;AACpB;EACE,6BAA6B;AAAE;;AACjC;EACE,6BAA6B;AAAE;;AACjC;EACE,6BAA6B;AAAE;;AACjC;EACE,6BAA6B;AAAE;;AACjC;EACE,8BAA8B;AAAE;;AAClC;EACE,qBAAqB;AAAE;;AACzB;EACE,qBAAqB;EACrB,QAAQ;EACR,SAAS;EACT,kBAAkB;EAClB,iCAAiC;EACjC,oCAAoC;EACpC,eAAe;EACf,2BAA2B;EAC3B,sBAAsB;AAAE;;AAC1B;EACE,iBAAiB;EACjB,WAAW;AAAE;;AACjB;EACE,oBAAoB;EACpB,uBAAuB;EACvB,mBAAmB;EACnB,sBAAsB;EACtB,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,sBAAsB;EACtB,kBAAkB;EAClB,8BAA8B;EAC9B,gBAAgB;AAAE;;AAClB;EACE,eAAe;EACf,8BAA8B;AAAE;;AAClC;EACE,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,uBAAuB;AAAE;;AACzB;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,QAAQ;EACR,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AACtB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AAClB;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,QAAQ;EACR,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AAE1B;EACE,sBAAsB;EACtB,mBAAmB;EACnB,YAAY;AAAE;;AACd;EACE,6BAA6B;EAC7B,sBAAsB;EACtB,cAAc;AAAE;;AAChB;EACE,sBAAsB;EACtB,kBAAkB;AAAE;;AACpB;EACE,YAAY;AAAE;;AAChB;EACE,0BAA0B;AAAE;;AAChC;EACE,WAAW;EACX,6BAA6B;AAAE;;AACnC;EACE,WAAW;AAAE;;AACf;EACE,cAAc;AAAE;;AAClB;EACE,0BAA0B;EAC1B,mBAAmB;AAAE;;AACrB;EACE,6BAA6B;EAC7B,0BAA0B;AAAE;;AAC9B;EACE,cAAc;AAAE;;AACpB;EACE,yBAAyB;AAAE;;AAC7B;EACE,sBAAsB;AAAE;;AACxB;EACE,4BAA4B;AAAE;;AAChC;EACE,4BAA4B;AAAE;;AAClC;EACE,YAAY;AAAE;;AAChB;EACE,gBAAgB;AAAE;;AAClB;EACE,YAAY;AAAE;;AAClB;EACE,8BAA8B;AAAE;;AAClC;EACE,8BAA8B;AAAE;;AAClC;EACE,8BAA8B;AAAE;;AAClC;EACE,8BAA8B;AAAE;;AAClC;EACE,8BAA8B;AAAE;;AAEpC;EACE,gBAAgB;EAChB,6BAA6B;AAAE;;AAC/B;EACE,6BAA6B;AAAE;;AACjC;EACE,oCAAoC;AAAE;;AACxC;EACE,oCAAoC;AAAE;;AACxC;EACE,oCAAoC;EACpC,eAAe;AAAE;;AACnB;EACE,YAAY;EACZ,kBAAkB;AAAE;;AACpB;EACE,kBAAkB;AAAE;;AACtB;EACE,sBAAsB;AAAE;;AACxB;EACE,gBAAgB;AAAE;;AACpB;EACE,gBAAgB;AAAE;;AAClB;EACE,gBAAgB;AAAE;;AAC1B;EACE,mBAAmB;AAAE;;AACrB;EACE,WAAW;AAAE;;AAEnB;EACE,cAAc;AAAE;;AAElB;EACE,cAAc;AAAE;;AAElB;EACE,cAAc;AAAE;;AAElB;EACE,YAAY;AAAE;;AAEhB;EACE,yBAAyB;AAAE;;AAC3B;EACE,mBAAmB;AAAE;;AACrB;EACE,WAAW;AAAE;;AACjB;EACE,sBAAsB;AAAE;;AACxB;EACE,gBAAgB;AAAE;;AACpB;EACE,gBAAgB;AAAE;;AAClB;EACE,gBAAgB;AAAE","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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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:nth-child(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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\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/dist/css/tabulator_bootstrap3.min.css b/dist/css/tabulator_bootstrap3.min.css index fb397cc99..262d8b049 100644 --- a/dist/css/tabulator_bootstrap3.min.css +++ b/dist/css/tabulator_bootstrap3.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;border:1px solid #ddd;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #ddd;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev{display:none}.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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #ddd;background-color:#e6e6e6;color:#555;font-weight:700;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:calc(100% + 20px);text-align:left;background:#f3f3f3!important;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{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}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.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}.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}.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{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.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-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-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px}.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}.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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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-menu{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,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.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}.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-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.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 .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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.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:nth-child(2n){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{min-height:30px;border-bottom:1px solid #ddd}.tabulator-row.tabulator-row-even{background-color:transparent}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5!important}.tabulator-row.tabulator-selected{background-color:#9abcea!important}.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,.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} +.tabulator{position:relative;border:1px solid #ddd;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #ddd;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #ddd;background-color:#e6e6e6;color:#555;font-weight:700;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:calc(100% + 20px);text-align:left;background:#f3f3f3!important;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(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:10;vertical-align:middle}.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,.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:700;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}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.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}.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 #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.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-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-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px}.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}.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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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,.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}.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-color:#ddd;border-style:solid;border-width:1px 1px 0 0;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 hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}.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:6px 4px 4px;color:#333;font-weight:700}.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{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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.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 .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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.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:nth-child(2n){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{min-height:30px;border-bottom:1px solid #ddd}.tabulator-row.tabulator-row-even{background-color:transparent}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5!important}.tabulator-row.tabulator-selected{background-color:#9abcea!important}.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,.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/dist/css/tabulator_bootstrap3.min.css.map b/dist/css/tabulator_bootstrap3.min.css.map index 486f24806..bfe39f038 100644 --- a/dist/css/tabulator_bootstrap3.min.css.map +++ b/dist/css/tabulator_bootstrap3.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["tabulator_bootstrap3.scss"],"names":[],"mappings":"AAAA,WACE,iBAAkB,CAClB,qBAAsB,CAEtB,cAAe,CACf,eAAgB,CAChB,eAAgB,CAChB,+BAAgC,CAChC,4BAA6B,CAC7B,2BAA4B,CAC5B,0BAA2B,CAC3B,uBAA0B,CAC1B,iFACE,cAAiB,CACnB,0CACE,oBAAuB,CACzB,kCACE,gBAAmB,CACrB,6BACE,iBAAkB,CAClB,qBAAsB,CACtB,UAAW,CACX,4BAA6B,CAE7B,UAAW,CACX,eAAiB,CACjB,kBAAmB,CACnB,eAAgB,CAChB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAsB,CACtB,qDACE,YAAe,CACjB,4CACE,oBAAqB,CACrB,iBAAkB,CAClB,qBAAsB,CACtB,2BAA4B,CAC5B,eAAgB,CAChB,eAAgB,CAChB,qBAAsB,CACtB,eAAkB,CAClB,6DACE,iBAAkB,CAClB,qBAAsB,CACtB,kBAAmB,CACnB,mBAAsB,CACxB,mEACE,qBAAsB,CACtB,iBAAkB,CAClB,WAAc,CACd,iGACE,aAAgB,CAChB,uGACE,cAAe,CACf,UAAa,CACjB,+FACE,iBAAoB,CACtB,wFACE,qBAAsB,CACtB,UAAW,CACX,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,qBAAwB,CACxB,gHACE,qBAAsB,CACtB,UAAW,CACX,qBAAsB,CACtB,WAAY,CACZ,eAAkB,CACpB,8IACE,uBAA0B,CAC9B,yFACE,YAAa,CACb,kBAAmB,CACnB,iBAAkB,CAClB,KAAM,CACN,QAAS,CACT,SAAY,CACZ,0GACE,OAAQ,CACR,QAAS,CACT,iCAAkC,CAClC,kCAAmC,CACnC,4BAA+B,CACrC,0FACE,iBAAkB,CAClB,YAAa,CACb,yBAA0B,CAC1B,eAAgB,CAChB,iBAAoB,CACtB,0FACE,YAAe,CACjB,qEACE,iBAAkB,CAClB,qBAAsB,CACtB,cAAe,CACf,UAAW,CACX,iBAAoB,CACpB,8EACE,qBAAyB,CAC3B,yEACE,cAAiB,CACnB,sFACE,OAAQ,CACR,QAAW,CACf,oFACE,kBAAqB,CACvB,qEACE,cAAe,CACf,wBAA2B,CAC7B,4HACE,UAAa,CACb,6IACE,eAAgB,CAChB,4BAA+B,CACnC,2HACE,UAAa,CACb,4IACE,eAAgB,CAChB,4BAA+B,CACnC,4HACE,UAAa,CACb,6IACE,kBAAmB,CACnB,yBAA0B,CAC1B,UAAa,CACjB,+GACE,wBAAyB,CACzB,sBAAuB,CACvB,YAAa,CACb,kBAAmB,CACnB,sBAAyB,CAC3B,oHACE,wBAA2B,CAC7B,2GACE,eAAgB,CAChB,gBAAmB,CACrB,uIACE,eAAgB,CAChB,mBAAsB,CACxB,4GACE,sBAAuB,CACvB,MAAO,CACP,OAAQ,CACR,OAAQ,CACR,WAAc,CAClB,+CACE,oBAAqB,CACrB,iBAAkB,CAClB,UAAa,CACb,qEACE,2BAA8B,CAChC,sEACE,0BAA6B,CACjC,qDACE,qBAAsB,CACtB,cAAe,CACf,yBAA4B,CAC5B,yBAA0B,CAC1B,4BAA6B,CAC7B,eAAkB,CAClB,oEACE,yBAA8B,CAC9B,iGACE,YAAe,CACrB,2DACE,cAAiB,CACjB,iEACE,YAAe,CACrB,kCACE,iBAAkB,CAClB,UAAW,CACX,kBAAmB,CACnB,aAAc,CACd,gCAAmC,CACnC,wCACE,YAAe,CACjB,yDACE,qBAAsB,CACtB,YAAa,CACb,kBAAmB,CACnB,UAAa,CACb,wFACE,eAAgB,CAChB,cAAiB,CACnB,yFACE,oBAAqB,CACrB,iBAAkB,CAClB,YAAa,CACb,UAAW,CACX,eAAiB,CACjB,cAAe,CACf,kBAAqB,CACzB,mDACE,iBAAkB,CAClB,oBAAqB,CACrB,qBAAsB,CACtB,kBAAmB,CACnB,gBAAiB,CACjB,UAAa,CACb,kFACE,eAAiB,CACjB,4BAAgC,CAChC,sGACE,4BAA+B,CACjC,yGACE,yBAA4B,CACpC,6BACE,yBAA0B,CAC1B,wBAAyB,CACzB,UAAW,CACX,eAAiB,CACjB,kBAAmB,CACnB,gBAAiB,CACjB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAsB,CACtB,wDACE,YAAa,CACb,kBAAmB,CACnB,kBAAmB,CACnB,6BAA8B,CAC9B,gBAAmB,CACnB,8DACE,YAAe,CACnB,qDACE,qBAAsB,CACtB,uBAAwB,CACxB,eAAgB,CAChB,4BAA8B,CAG9B,eAAkB,CAClB,oEACE,4BAAgC,CAChC,iGACE,YAAe,CACnB,gEACE,kBAAmB,CACnB,kBAAqB,CACzB,uDACE,gBAAmB,CACrB,qDACE,eAAqB,CACvB,kDACE,MAAO,CACP,gBAAiB,CACjB,UAAW,CACX,mBAAoB,CACpB,mBAAoB,CACpB,iBAAoB,CACtB,kDACE,oBAAqB,CACrB,YAAa,CACb,eAAgB,CAChB,qBAAsB,CACtB,iBAAoB,CACtB,8CACE,YAAe,CACjB,6CACE,oBAAqB,CACrB,YAAa,CACb,eAAgB,CAChB,qBAAsB,CACtB,iBAAkB,CAClB,6BAAsC,CACtC,oDACE,UAAa,CACf,sDACE,UAAa,CACf,kEACE,cAAe,CACf,yBAA8B,CAC9B,UAAa,CACnB,wCACE,iBAAkB,CAClB,OAAQ,CACR,KAAM,CACN,QAAS,CACT,SAAY,CACZ,6CACE,MAAO,CACP,UAAa,CACf,8CACE,gBAAmB,CACvB,6BACE,iBAAkB,CAClB,YAAa,CACb,kBAAmB,CACnB,KAAM,CACN,MAAO,CACP,WAAY,CACZ,WAAY,CACZ,UAAW,CACX,yBAA8B,CAC9B,iBAAoB,CACpB,mDACE,oBAAqB,CACrB,aAAc,CACd,iBAAkB,CAClB,kBAAmB,CACnB,eAAgB,CAChB,eAAiB,CACjB,cAAiB,CACjB,qEACE,qBAAsB,CACtB,UAAa,CACf,mEACE,qBAAsB,CACtB,aAAgB,CAExB,eACE,iBAAkB,CAClB,qBAAsB,CACtB,eAAgB,CAChB,qBAAwB,CACxB,kCACE,wBAA2B,CAC7B,0CACE,wBAAyB,CACzB,cAAiB,CACnB,kCACE,wBAA2B,CAC7B,wCACE,wBACiB,CACnB,oCACE,qBAAsB,CACtB,eAAkB,CACpB,gCACE,iBAAkB,CAClB,yBAA0B,CAC1B,4BAA6B,CAC7B,mBAAoB,CACpB,UAAa,CACf,4CACE,iBAAkB,CAClB,OAAQ,CACR,QAAS,CACT,MAAO,CACP,UAAa,CACb,iDACE,KAAM,CACN,WAAc,CAChB,kDACE,gBAAmB,CACvB,iCACE,oBAAqB,CACrB,iBAAkB,CAClB,wBAAyB,CACzB,UAAa,CACb,uDACE,2BAA8B,CAChC,wDACE,0BAA6B,CACjC,8CACE,qBAAsB,CACtB,WAAY,CACZ,yBAA0B,CAC1B,4BAA+B,CAC/B,oDACE,YAAe,CACjB,oDACE,cAAiB,CACjB,0DACE,iBAAoB,CACpB,wEACE,kBAAqB,CAC7B,+BACE,oBAAqB,CACrB,iBAAkB,CAClB,qBAAsB,CACtB,WAAY,CACZ,2BAA4B,CAC5B,qBAAsB,CACtB,kBAAmB,CACnB,eAAgB,CAChB,sBAAyB,CACzB,iDACE,wBAAyB,CACzB,YAAa,CACb,SAAY,CACZ,+GACE,UAAW,CACX,sBAAyB,CAC7B,yDACE,qBAA2B,CAC3B,+HACE,UAAW,CACX,sBAAuB,CACvB,UAAgB,CACpB,6EACE,YAAe,CACjB,oDACE,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CACvB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAsB,CACtB,8EACE,SAAY,CACZ,wGACE,UAAW,CACX,UAAW,CACX,cAAe,CACf,eAAkB,CACxB,2DACE,oBAAqB,CACrB,qBAAsB,CACtB,UAAW,CACX,SAAU,CACV,eAAgB,CAChB,gBAAiB,CACjB,6BAA8B,CAC9B,0BAA2B,CAC3B,4BAA+B,CACjC,4DACE,mBAAoB,CACpB,sBAAuB,CACvB,kBAAmB,CACnB,qBAAsB,CACtB,WAAY,CACZ,UAAW,CACX,gBAAiB,CAEjB,iBAAkB,CAClB,yBAA8B,CAC9B,eAAkB,CAClB,kEACE,cAAe,CACf,yBAAgC,CAClC,kGACE,oBAAqB,CACrB,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,sBAAyB,CACzB,wGACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,OAAQ,CACR,UAAW,CACX,SACkB,CACtB,gGACE,oBAAqB,CACrB,iBAAkB,CAClB,UAAW,CACX,SACkB,CAClB,sGACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,OAAQ,CACR,UAAW,CACX,SACkB,CACxB,qEACE,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CACvB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAoB,CACpB,WAAY,CACZ,UAAW,CACX,kBAAmB,CACnB,eAAgB,CAChB,UAAW,CACX,eAAiB,CACjB,eAAkB,CAClB,2EACE,UAAa,CACf,sHACE,eAAkB,CAGpB,sOACE,YAAe,CACnB,wDACE,oBAAqB,CACrB,WAAY,CACZ,UAAW,CACX,kBAAqB,CACzB,+BACE,qBAAsB,CACtB,4BAA6B,CAC7B,2BAA4B,CAC5B,yBAA0B,CAE1B,wBAAkB,CAClB,eAAgB,CAChB,eAAiB,CACjB,cAAiB,CACjB,qCACE,cAAe,CACf,+BAAsC,CACxC,wEACE,iBAAkB,CAClB,iCAAkC,CAClC,kCAAmC,CACnC,yBAA0B,CAC1B,eAAkB,CACpB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,kBAAqB,CACvB,uDACE,oBAAuB,CACzB,gDACE,oBAAqB,CACrB,OAAQ,CACR,QAAS,CACT,iBAAkB,CAClB,gCAAiC,CACjC,mCAAoC,CACpC,cAAe,CACf,0BAA2B,CAC3B,qBAAwB,CAC1B,oCACE,gBAAiB,CACjB,UAAa,CAEnB,gBACE,iBAAkB,CAClB,oBAAqB,CACrB,qBAAsB,CACtB,eAAgB,CAChB,qBAAsB,CACtB,mCAAwC,CACxC,cAAe,CACf,eAAgB,CAChB,gCAAiC,CACjC,aAAgB,CAChB,qCACE,iBAAkB,CAClB,qBAAsB,CACtB,gBAAiB,CACjB,gBAAmB,CACnB,kEACE,UAAa,CACf,8EACE,cAAe,CACf,kBAAqB,CACvB,iEACE,kBAAqB,CACrB,uEACE,oBAAqB,CACrB,iBAAkB,CAClB,oBAAqB,CACrB,UAAW,CACX,UAAW,CACX,SAAU,CACV,UAAW,CAGX,iBAAkB,CAAlB,kBAAkB,CAAlB,wBAAkB,CAClB,kBAAmB,CACnB,uBAA0B,CAChC,0CACE,yBAA4B,CAEhC,4BACE,iBAAkB,CAClB,oBAAqB,CACrB,qBAAsB,CACtB,gBAAiB,CACjB,eAAgB,CAChB,qBAAsB,CACtB,cAAe,CACf,eAAgB,CAChB,gCAAiC,CACjC,aAAgB,CAChB,6DACE,WAAY,CACZ,UAAa,CACb,oEACE,UAAW,CACX,kBAAqB,CACrB,4EACE,oCAA6C,CACjD,qEACE,yBAA4B,CAC9B,mEACE,cAAe,CACf,UAAW,CACX,kBAAqB,CACzB,+DACE,WAAY,CACZ,UAAW,CACX,iBAAoB,CACtB,8DACE,4BAA6B,CAE7B,mBAAgB,CAChB,UAAW,CACX,eAAmB,CAEvB,yBACE,aAAgB,CAElB,yBACE,kBAAmB,CACnB,aAAgB,CAChB,0DACE,kBAAmB,CACnB,0BAA2B,CAC3B,oBAAuB,CACvB,wGACE,cAAqB,CACrB,gBAAmB,CACrB,kGACE,eAAgB,CAChB,iBAAoB,CACtB,uGACE,QAAS,CACT,UAAgB,CACpB,wDACE,oBAAqB,CACrB,0BAA6B,CAC7B,oFACE,cAAqB,CACrB,eAAgB,CAChB,2BAAkC,CAClC,8BAA+B,CAC/B,mBAAoB,CACpB,2BAA8B,CAChC,qFACE,cAAqB,CACrB,eAAkB,CACtB,sDACE,iBAAkB,CAClB,MAAO,CACP,UAAa,CACb,2DACE,OAAQ,CACR,SAAY,CAElB,4BACE,iBAAkB,CAClB,KAAM,CACN,QAAS,CACT,MAAO,CACP,OAAQ,CACR,aAAgB,CAElB,uEACE,sBAA0B,CAI1B,mDACE,oBAAqB,CACrB,qBAAsB,CACtB,UAAW,CACX,SAAU,CACV,eAAgB,CAChB,gBAAiB,CACjB,6BAA8B,CAC9B,0BAA2B,CAC3B,4BAA+B,CACjC,oDACE,qBAAsB,CACtB,4BAA6B,CAC7B,2BAA4B,CAC5B,yBAA0B,CAE1B,wBAAkB,CAClB,eAAgB,CAChB,eAAiB,CACjB,cAAiB,CACjB,0DACE,cAAe,CACf,+BAAsC,CACxC,6FACE,iBAAkB,CAClB,iCAAkC,CAClC,kCAAmC,CACnC,yBAA0B,CAC1B,eAAkB,CACpB,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,4BAAgC,CAClC,4EACE,oBAAuB,CACzB,qEACE,oBAAqB,CACrB,OAAQ,CACR,QAAS,CACT,iBAAkB,CAClB,gCAAiC,CACjC,mCAAoC,CACpC,cAAe,CACf,0BAA2B,CAC3B,qBAAwB,CAC1B,yDACE,gBAAiB,CACjB,UAAa,CACjB,oDACE,mBAAoB,CACpB,sBAAuB,CACvB,kBAAmB,CACnB,qBAAsB,CACtB,WAAY,CACZ,UAAW,CACX,gBAAiB,CAEjB,iBAAkB,CAClB,yBAA8B,CAC9B,eAAkB,CAClB,0DACE,cAAe,CACf,yBAAgC,CAClC,0FACE,oBAAqB,CACrB,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,sBAAyB,CACzB,gGACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,OAAQ,CACR,UAAW,CACX,SACkB,CACtB,wFACE,oBAAqB,CACrB,iBAAkB,CAClB,UAAW,CACX,SACkB,CAClB,8FACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,OAAQ,CACR,UAAW,CACX,SACkB,CAE1B,WACE,qBAAsB,CACtB,kBAAmB,CACnB,WAAc,CACd,6BACE,4BAA6B,CAC7B,qBAAsB,CACtB,aAAgB,CAChB,4CACE,qBAAsB,CACtB,iBAAoB,CACpB,mEACE,WAAc,CAChB,0FACE,yBAA4B,CAChC,qDACE,UAAW,CACX,4BAA+B,CACnC,8DACE,UAAa,CACf,mDACE,aAAgB,CAClB,6BACE,yBAA0B,CAC1B,kBAAqB,CACrB,qDACE,4BAA6B,CAC7B,yBAA4B,CAC9B,kDACE,aAAgB,CACpB,sDACE,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,eACE,eAAgB,CAChB,4BAA+B,CAC/B,kCACE,4BAA+B,CACjC,0CACE,kCAAsC,CACxC,kCACE,kCAAsC,CACxC,wCACE,kCAAoC,CACpC,cAAiB,CACnB,+BACE,WAAY,CACZ,iBAAoB,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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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:nth-child(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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\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 +{"version":3,"sources":["tabulator_bootstrap3.scss"],"names":[],"mappings":"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","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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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:nth-child(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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\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/dist/css/tabulator_bootstrap4.css b/dist/css/tabulator_bootstrap4.css index cd081ce2e..9a8222f3d 100644 --- a/dist/css/tabulator_bootstrap4.css +++ b/dist/css/tabulator_bootstrap4.css @@ -68,11 +68,11 @@ padding: 4px; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { +.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-menu-button:hover { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { cursor: pointer; opacity: .6; } @@ -98,7 +98,7 @@ background: #fff; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { width: calc(100% - 22px); } @@ -127,10 +127,6 @@ margin-right: -1px; } -.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator .tabulator-header .tabulator-col .tabulator-header-filter { position: relative; box-sizing: border-box; @@ -415,23 +411,25 @@ } .tabulator .tabulator-col-resize-handle { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 5px; -} - -.tabulator .tabulator-col-resize-handle.prev { - left: 0; - right: auto; + position: relative; + display: inline-block; + width: 6px; + margin-left: -3px; + margin-right: -3px; + z-index: 10; + vertical-align: middle; } .tabulator .tabulator-col-resize-handle:hover { cursor: ew-resize; } -.tabulator .tabulator-loader { +.tabulator .tabulator-col-resize-handle:last-of-type { + width: 3px; + margin-right: 0; +} + +.tabulator .tabulator-alert { position: absolute; display: flex; align-items: center; @@ -444,7 +442,7 @@ text-align: center; } -.tabulator .tabulator-loader .tabulator-loader-msg { +.tabulator .tabulator-alert .tabulator-alert-msg { display: inline-block; margin: 0 auto; padding: 10px 20px; @@ -454,12 +452,12 @@ font-size: 16px; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { border: 4px solid #333; color: #000; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { border: 4px solid #D00; color: #590000; } @@ -579,6 +577,7 @@ .tabulator-row .tabulator-cell.tabulator-editing select { border: 1px; background: transparent; + outline: none; } .tabulator-row .tabulator-cell.tabulator-validation-fail { @@ -592,10 +591,6 @@ color: #dd0000; } -.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator-row .tabulator-cell.tabulator-row-handle { display: inline-flex; align-items: center; @@ -790,7 +785,7 @@ color: #d00; } -.tabulator-menu { +.tabulator-popup-container { position: absolute; display: inline-block; box-sizing: border-box; @@ -803,6 +798,20 @@ 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; @@ -842,50 +851,45 @@ border-top: 1px solid #dee2e6; } -.tabulator-edit-select-list { - position: absolute; - display: inline-block; - box-sizing: border-box; +.tabulator-edit-list { max-height: 200px; - background: #fff; - border: 1px solid #dee2e6; font-size: 16px; overflow-y: auto; -webkit-overflow-scrolling: touch; - z-index: 10000; } -.tabulator-edit-select-list .tabulator-edit-select-list-item { +.tabulator-edit-list .tabulator-edit-list-item { padding: 4px; color: #333; + outline: none; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { +.tabulator-edit-list .tabulator-edit-list-item.active { color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { +.tabulator-edit-list .tabulator-edit-list-item.active.focused { outline: 1px solid rgba(255, 255, 255, 0.5); } -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { +.tabulator-edit-list .tabulator-edit-list-item.focused { outline: 1px solid #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { +.tabulator-edit-list .tabulator-edit-list-item:hover { cursor: pointer; color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-notice { +.tabulator-edit-list .tabulator-edit-list-placeholder { padding: 4px; color: #333; text-align: center; } -.tabulator-edit-select-list .tabulator-edit-select-list-group { +.tabulator-edit-list .tabulator-edit-list-group { border-bottom: 1px solid #dee2e6; padding: 4px; padding-top: 6px; @@ -893,6 +897,26 @@ 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; } @@ -942,17 +966,6 @@ margin-left: 5px; } -.tabulator.tabulator-rtl .tabulator-col-resize-handle { - position: absolute; - left: 0; - right: auto; -} - -.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { - right: 0; - left: auto; -} - .tabulator-print-fullscreen { position: absolute; top: 0; diff --git a/dist/css/tabulator_bootstrap4.css.map b/dist/css/tabulator_bootstrap4.css.map index c9a54114c..7d9590701 100644 --- a/dist/css/tabulator_bootstrap4.css.map +++ b/dist/css/tabulator_bootstrap4.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #dee2e6; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #dee2e6;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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:nth-child(even) {\n background-color: #f9f9f9; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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:nth-child(even) {\n background-color: #f9f9f9; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(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 .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/dist/css/tabulator_bootstrap4.min.css b/dist/css/tabulator_bootstrap4.min.css index bed7904a9..c6e72ad31 100644 --- a/dist/css/tabulator_bootstrap4.min.css +++ b/dist/css/tabulator_bootstrap4.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;border:1px solid #dee2e6;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #dee2e6;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev{display:none}.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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#fff!important;border-top:1px solid #dee2e6;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #dee2e6;background-color:#e6e6e6;color:#555;font-weight:700;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:calc(100% + 20px);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{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{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}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.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}.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}.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{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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-menu{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,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.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}.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-color:#dee2e6;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #dee2e6}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;border:1px solid #dee2e6;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #dee2e6;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.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-right:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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-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-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}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{border-color:#dee2e6;background:#e9ecef;color:#0056b3}.tabulator.thead-dark .tabulator-header,.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,.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}.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{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:nth-child(2n){background-color:#f9f9f9}.tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(2n).tabulator-selected{background-color:#9abcea}.tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(2n).tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(2n).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{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,.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)}.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{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,.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{position:relative;border:1px solid #dee2e6;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #dee2e6;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#fff!important;border-top:1px solid #dee2e6;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #dee2e6;background-color:#e6e6e6;color:#555;font-weight:700;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:calc(100% + 20px);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{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(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:10;vertical-align:middle}.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,.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:700;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}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.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}.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 #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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,.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}.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-color:#dee2e6;border-style:solid;border-width:1px 1px 0 0;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 hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}.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:6px 4px 4px;color:#333;font-weight:700}.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{text-align:initial;direction:rtl}.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-right:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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-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-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}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{border-color:#dee2e6;background:#e9ecef;color:#0056b3}.tabulator.thead-dark .tabulator-header,.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,.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}.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{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:nth-child(2n){background-color:#f9f9f9}.tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(2n).tabulator-selected{background-color:#9abcea}.tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(2n).tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(2n).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{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,.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)}.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{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,.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/dist/css/tabulator_bootstrap4.min.css.map b/dist/css/tabulator_bootstrap4.min.css.map index 7d95ed24d..6b77729b0 100644 --- a/dist/css/tabulator_bootstrap4.min.css.map +++ b/dist/css/tabulator_bootstrap4.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["tabulator_bootstrap4.scss"],"names":[],"mappings":"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B,wBAAyB,CACzB,UAAa,CACf,sDACE,oBAAqB,CACrB,eAAgB,CAChB,aAAgB,CAClB,kEACE,oBAAqB,CACrB,kBAAmB,CACnB,aAAgB,CAKpB,+FACE,oBAAqB,CACrB,wBAAyB,CACzB,UAAa,CACjB,sBACE,wBAA2B,CAKzB,mIAHA,oBAAqB,CACrB,wBAAyB,CACzB,UAIe,CACjB,6CACE,UAAa,CACf,qCACE,oBAAqB,CACrB,wBAAyB,CACzB,UAAa,CACb,2CACE,wBAA2B,CAC3B,2DACE,qCAA8C,CAClD,wDACE,wBAA2B,CAC/B,wCACE,8BAAkC,CAClC,gEACE,8BAAgC,CAChC,4BAAgC,CAChC,+EACE,8BAAgC,CAChC,kCAAoC,CACpC,oBAAwB,CAChC,uEACE,wBAA2B,CAC3B,0FACE,wBAA2B,CAC7B,kGACE,wBAAyB,CACzB,cAAiB,CACnB,gGACE,wBAAyB,CACzB,cAAiB,CACrB,iFACE,oCAA6C,CAC/C,0BACE,wBAA2B,CAG3B,4JACE,8BAAiC,CAGrC,yFACE,WAAc,CAChB,4EACE,qBAAyB,CAC3B,2EACE,eAAkB,CAClB,2FACE,qBAAyB,CAC7B,gFACE,4BAAgC,CAClC,kFACE,4BAAgC,CAClC,gFACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,gFACE,4BAAgC,CAClC,+EACE,4BAAgC,CAClC,8EACE,4BAAgC,CAClC,6EACE,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,6FACE,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,eACE,eAAgB,CAChB,+BAAkC,CAClC,+BACE,YAAa,CACb,iBAAoB,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,mEACE,UAAa,CAGf,6HACE,aAAgB,CAEpB,0DACE,kBAAmB,CACnB,mBAAsB,CAExB,oDACE,kBAAqB,CACrB,yDACE,UAAa,CAEjB,oDACE,aAAgB,CAKd,sRACE,eAAkB","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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #dee2e6; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #dee2e6;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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:nth-child(even) {\n background-color: #f9f9f9; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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:nth-child(even) {\n background-color: #f9f9f9; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row:nth-child(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 .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/dist/css/tabulator_bootstrap5.css b/dist/css/tabulator_bootstrap5.css new file mode 100644 index 000000000..ee94ea535 --- /dev/null +++ b/dist/css/tabulator_bootstrap5.css @@ -0,0 +1,1580 @@ +.tabulator { + position: relative; + border: 1px solid #dee2e6; + background-color: transparent; + 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-header { + position: relative; + box-sizing: border-box; + width: 100%; + border-bottom: 1px solid #dee2e6; + background-color: transparent; + 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; +} + +.tabulator .tabulator-header.tabulator-header-hidden { + display: none; +} + +.tabulator .tabulator-header .tabulator-col { + display: inline-block; + position: relative; + box-sizing: border-box; + 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 #dee2e6; + background: rgba(0, 0, 0, 0); + pointer-events: none; +} + +.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-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; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-sortable: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; +} + +.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="asc"] .tabulator-col-content .tabulator-col-sorter { + color: #666; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .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="desc"] .tabulator-col-content .tabulator-col-sorter { + color: #666; +} + +.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .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 { + display: inline-block; + position: absolute; + z-index: 10; +} + +.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; + min-width: 600%; + background: rgba(13, 13, 13, 0) !important; + border-top: 1px solid #dee2e6; + border-bottom: 1px solid #aaa; + overflow: hidden; +} + +.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 { + min-width: 600%; +} + +.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; + width: 100%; +} + +.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { + min-height: 100%; + min-width: 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: #333; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { + font-weight: bold; + background: rgba(0, 0, 0, 0.05) !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-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: calc(100% + 20px); + 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 { + 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; +} + +.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: 10; + vertical-align: middle; +} + +.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: rgba(0, 0, 0, 0.05); +} + +.tabulator-row.tabulator-selectable:hover { + background-color: rgba(0, 0, 0, 0.075); + cursor: pointer; +} + +.tabulator-row.tabulator-selected { + background-color: #9ABCEA; +} + +.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-row-resize-handle { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 5px; +} + +.tabulator-row .tabulator-row-resize-handle.prev { + top: 0; + bottom: auto; +} + +.tabulator-row .tabulator-row-resize-handle:hover { + cursor: ns-resize; +} + +.tabulator-row .tabulator-frozen { + display: inline-block; + position: absolute; + background-color: inherit; + z-index: 10; +} + +.tabulator-row .tabulator-frozen.tabulator-frozen-left { + border-right: 2px solid #dee2e6; +} + +.tabulator-row .tabulator-frozen.tabulator-frozen-right { + border-left: 2px solid #dee2e6; +} + +.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; +} + +.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-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; +} + +.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: transparent; + font-weight: bold; + font-size: 1.1em; +} + +.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { + 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 .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%; +} + +.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: transparent; + 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; +} + +.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.05); +} + +.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: 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; +} + +.tabulator-edit-list .tabulator-edit-list-item:hover { + cursor: pointer; + color: transparent; + 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-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%; +} + +.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; +} + +.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: transparent; + 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: transparent; +} + +.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; +} + +.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: transparent; + color: #212529; +} + +.tabulator.thead-dark .tabulator-header .tabulator-col { + border-color: #dee2e6; + background-color: transparent; + color: #212529; +} + +.tabulator.table { + background-color: transparent; +} + +.tabulator.table:not(.thead-light) .tabulator-header { + border-color: #dee2e6; + background-color: transparent; + color: #212529; +} + +.tabulator.table:not(.thead-light) .tabulator-header .tabulator-col { + border-color: #dee2e6; + background-color: transparent; + color: #212529; +} + +.tabulator.table .tabulator-tableholder { + color: #212529; +} + +.tabulator.table .tabulator-row { + border-color: #dee2e6; + background-color: transparent; + color: #212529; +} + +.tabulator.table .tabulator-row:hover { + background-color: #dee2e6; +} + +.tabulator.table .tabulator-row:hover .tabulator-cell { + background-color: rgba(0, 0, 0, 0.075); +} + +.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: transparent !important; +} + +.tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row { + border-color: #dee2e6 !important; + background-color: transparent !important; + color: #212529 !important; +} + +.tabulator.table-striped:not(.table) .tabulator-row:nth-child(even) { + background-color: rgba(0, 0, 0, 0.05); +} + +.tabulator.table-striped:not(.table) .tabulator-row:nth-child(even).tabulator-selected { + background-color: #9ABCEA; +} + +.tabulator.table-striped:not(.table) .tabulator-row:nth-child(even).tabulator-selectable:hover { + background-color: rgba(0, 0, 0, 0.075); + cursor: pointer; +} + +.tabulator.table-striped:not(.table) .tabulator-row:nth-child(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 .tabulator-tableholder .tabulator-table .tabulator-row.table-primary { + background: theme-color-level("primary", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary { + background: theme-color-level("secondary", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success { + background: theme-color-level("success", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info { + background: theme-color-level("info", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning { + background: theme-color-level("warning", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger { + background: theme-color-level("danger", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light { + background: theme-color-level("light", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table { + background: theme-color-level("dark", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active { + background: rgba(0, 0, 0, 0.1) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary { + background: theme-color-level("primary", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary { + background: theme-color-level("secondary", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success { + background: theme-color-level("success", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info { + background: theme-color-level("info", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning { + background: theme-color-level("warning", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger { + background: theme-color-level("danger", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light { + background: theme-color-level("light", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark { + background: theme-color-level("dark", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active { + background: rgba(0, 0, 0, 0.1) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary { + background: theme-color-level("primary", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary { + background: theme-color-level("secondary", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success { + background: theme-color-level("success", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info { + background: theme-color-level("info", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning { + background: theme-color-level("warning", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger { + background: theme-color-level("danger", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light { + background: theme-color-level("light", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table { + background: theme-color-level("dark", -9) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active { + background: rgba(0, 0, 0, 0.1) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary { + background: theme-color-level("primary", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary { + background: theme-color-level("secondary", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success { + background: theme-color-level("success", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info { + background: theme-color-level("info", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning { + background: theme-color-level("warning", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger { + background: theme-color-level("danger", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light { + background: theme-color-level("light", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark { + background: theme-color-level("dark", 0) !important; +} + +.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active { + background: rgba(0, 0, 0, 0.1) !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: transparent; +} + +.tabulator-edit-select-list .tabulator-edit-select-list-item.active { + color: transparent; +} + +.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { + outline: 1px solid rgba(0, 0, 0, 0.5); +} + +.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { + color: transparent; +} + +.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_bootstrap5.css.map */ \ No newline at end of file diff --git a/dist/css/tabulator_bootstrap5.css.map b/dist/css/tabulator_bootstrap5.css.map new file mode 100644 index 000000000..a09e63cc7 --- /dev/null +++ b/dist/css/tabulator_bootstrap5.css.map @@ -0,0 +1 @@ +{"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: transparent;\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-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #dee2e6;\n background-color: transparent;\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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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 #dee2e6;\n background: rgba(0, 0, 0, 0);\n pointer-events: none; }\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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: rgba(0, 0, 0, 0.05) !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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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: rgba(0, 0, 0, 0.05); }\n .tabulator-row.tabulator-selectable:hover {\n background-color: rgba(0, 0, 0, 0.075);\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\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 .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-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 .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: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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: transparent;\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 .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.05); }\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: 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 .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: #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\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 .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 .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: transparent;\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: transparent; }\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 .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: transparent;\n color: #212529; }\n .tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: transparent;\n color: #212529; }\n .tabulator.table {\n background-color: transparent; }\n .tabulator.table:not(.thead-light) .tabulator-header {\n border-color: #dee2e6;\n background-color: transparent;\n color: #212529; }\n .tabulator.table:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: transparent;\n color: #212529; }\n .tabulator.table .tabulator-tableholder {\n color: #212529; }\n .tabulator.table .tabulator-row {\n border-color: #dee2e6;\n background-color: transparent;\n color: #212529; }\n .tabulator.table .tabulator-row:hover {\n background-color: #dee2e6; }\n .tabulator.table .tabulator-row:hover .tabulator-cell {\n background-color: rgba(0, 0, 0, 0.075); }\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: transparent !important; }\n .tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n border-color: #dee2e6 !important;\n background-color: transparent !important;\n color: #212529 !important; }\n .tabulator.table-striped:not(.table) .tabulator-row:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.05); }\n .tabulator.table-striped:not(.table) .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table-striped:not(.table) .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: rgba(0, 0, 0, 0.075);\n cursor: pointer; }\n .tabulator.table-striped:not(.table) .tabulator-row:nth-child(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 .tabulator-tableholder .tabulator-table .tabulator-row.table-primary {\n background: theme-color-level(\"primary\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary {\n background: theme-color-level(\"secondary\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success {\n background: theme-color-level(\"success\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info {\n background: theme-color-level(\"info\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning {\n background: theme-color-level(\"warning\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger {\n background: theme-color-level(\"danger\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light {\n background: theme-color-level(\"light\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table {\n background: theme-color-level(\"dark\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active {\n background: rgba(0, 0, 0, 0.1) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary {\n background: theme-color-level(\"primary\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary {\n background: theme-color-level(\"secondary\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success {\n background: theme-color-level(\"success\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info {\n background: theme-color-level(\"info\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning {\n background: theme-color-level(\"warning\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger {\n background: theme-color-level(\"danger\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light {\n background: theme-color-level(\"light\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark {\n background: theme-color-level(\"dark\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active {\n background: rgba(0, 0, 0, 0.1) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: theme-color-level(\"primary\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: theme-color-level(\"secondary\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: theme-color-level(\"success\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: theme-color-level(\"info\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: theme-color-level(\"warning\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: theme-color-level(\"danger\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: theme-color-level(\"light\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table {\n background: theme-color-level(\"dark\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: rgba(0, 0, 0, 0.1) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: theme-color-level(\"primary\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: theme-color-level(\"secondary\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: theme-color-level(\"success\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: theme-color-level(\"info\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: theme-color-level(\"warning\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: theme-color-level(\"danger\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: theme-color-level(\"light\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: theme-color-level(\"dark\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: rgba(0, 0, 0, 0.1) !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: transparent; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: transparent; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: transparent; }\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/dist/css/tabulator_bootstrap5.min.css b/dist/css/tabulator_bootstrap5.min.css new file mode 100644 index 000000000..3f712fcae --- /dev/null +++ b/dist/css/tabulator_bootstrap5.min.css @@ -0,0 +1,2 @@ +.tabulator{position:relative;border:1px solid #dee2e6;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #dee2e6;background-color:transparent;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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 #dee2e6;background:transparent;pointer-events:none}.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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:transparent}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:rgba(13,13,13,0)!important;border-top:1px solid #dee2e6;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:rgba(0,0,0,.05)!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-footer{border-top:1px solid #dee2e6;background-color:#e6e6e6;color:#555;font-weight:700;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:calc(100% + 20px);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{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(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:10;vertical-align:middle}.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,.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:700;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:rgba(0,0,0,.05)}.tabulator-row.tabulator-selectable:hover{background-color:rgba(0,0,0,.075);cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.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}.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 #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:transparent;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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:transparent;border:1px solid #dee2e6;box-shadow:0 0 5px 0 rgba(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}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:rgba(0,0,0,.05)}.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-color:#dee2e6;border-style:solid;border-width:1px 1px 0 0;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:transparent;background:#1d68cd}.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}.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:transparent;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:6px 4px 4px;color:#333;font-weight:700}.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{text-align:initial;direction:rtl}.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-right:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:transparent;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:transparent}.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-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-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}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{border-color:#dee2e6;background:#e9ecef;color:#0a58ca}.tabulator.thead-dark .tabulator-header,.tabulator.thead-dark .tabulator-header .tabulator-col{border-color:#dee2e6;background-color:transparent;color:#212529}.tabulator.table{background-color:transparent}.tabulator.table:not(.thead-light) .tabulator-header,.tabulator.table:not(.thead-light) .tabulator-header .tabulator-col{border-color:#dee2e6;background-color:transparent;color:#212529}.tabulator.table .tabulator-tableholder{color:#212529}.tabulator.table .tabulator-row{border-color:#dee2e6;background-color:transparent;color:#212529}.tabulator.table .tabulator-row:hover{background-color:#dee2e6}.tabulator.table .tabulator-row:hover .tabulator-cell{background-color:rgba(0,0,0,.075)}.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:transparent!important}.tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row{border-color:#dee2e6!important;background-color:transparent!important;color:#212529!important}.tabulator.table-striped:not(.table) .tabulator-row:nth-child(2n){background-color:rgba(0,0,0,.05)}.tabulator.table-striped:not(.table) .tabulator-row:nth-child(2n).tabulator-selected{background-color:#9abcea}.tabulator.table-striped:not(.table) .tabulator-row:nth-child(2n).tabulator-selectable:hover{background-color:rgba(0,0,0,.075);cursor:pointer}.tabulator.table-striped:not(.table) .tabulator-row:nth-child(2n).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 .tabulator-tableholder .tabulator-table .tabulator-row.table-primary{background:theme-color-level("primary",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary{background:theme-color-level("secondary",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success{background:theme-color-level("success",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info{background:theme-color-level("info",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning{background:theme-color-level("warning",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger{background:theme-color-level("danger",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light{background:theme-color-level("light",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table{background:theme-color-level("dark",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active{background:rgba(0,0,0,.1)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary{background:theme-color-level("primary",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary{background:theme-color-level("secondary",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success{background:theme-color-level("success",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info{background:theme-color-level("info",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning{background:theme-color-level("warning",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger{background:theme-color-level("danger",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light{background:theme-color-level("light",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark{background:theme-color-level("dark",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active{background:rgba(0,0,0,.1)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary{background:theme-color-level("primary",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary{background:theme-color-level("secondary",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success{background:theme-color-level("success",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info{background:theme-color-level("info",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning{background:theme-color-level("warning",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger{background:theme-color-level("danger",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light{background:theme-color-level("light",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table{background:theme-color-level("dark",-9)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active{background:rgba(0,0,0,.1)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary{background:theme-color-level("primary",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary{background:theme-color-level("secondary",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success{background:theme-color-level("success",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info{background:theme-color-level("info",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning{background:theme-color-level("warning",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger{background:theme-color-level("danger",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light{background:theme-color-level("light",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark{background:theme-color-level("dark",0)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active{background:rgba(0,0,0,.1)!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,.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:transparent}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:transparent}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid rgba(0,0,0,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:transparent}.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{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,.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_bootstrap5.min.css.map */ \ No newline at end of file diff --git a/dist/css/tabulator_bootstrap5.min.css.map b/dist/css/tabulator_bootstrap5.min.css.map new file mode 100644 index 000000000..564f11588 --- /dev/null +++ b/dist/css/tabulator_bootstrap5.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["tabulator_bootstrap5.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap5.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #dee2e6;\n background-color: transparent;\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-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #dee2e6;\n background-color: transparent;\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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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 #dee2e6;\n background: rgba(0, 0, 0, 0);\n pointer-events: none; }\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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: rgba(0, 0, 0, 0.05) !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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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: rgba(0, 0, 0, 0.05); }\n .tabulator-row.tabulator-selectable:hover {\n background-color: rgba(0, 0, 0, 0.075);\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\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 .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-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 .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: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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: transparent;\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 .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.05); }\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: 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 .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: #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\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 .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 .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: transparent;\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: transparent; }\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 .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: transparent;\n color: #212529; }\n .tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: transparent;\n color: #212529; }\n .tabulator.table {\n background-color: transparent; }\n .tabulator.table:not(.thead-light) .tabulator-header {\n border-color: #dee2e6;\n background-color: transparent;\n color: #212529; }\n .tabulator.table:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: transparent;\n color: #212529; }\n .tabulator.table .tabulator-tableholder {\n color: #212529; }\n .tabulator.table .tabulator-row {\n border-color: #dee2e6;\n background-color: transparent;\n color: #212529; }\n .tabulator.table .tabulator-row:hover {\n background-color: #dee2e6; }\n .tabulator.table .tabulator-row:hover .tabulator-cell {\n background-color: rgba(0, 0, 0, 0.075); }\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: transparent !important; }\n .tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n border-color: #dee2e6 !important;\n background-color: transparent !important;\n color: #212529 !important; }\n .tabulator.table-striped:not(.table) .tabulator-row:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.05); }\n .tabulator.table-striped:not(.table) .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table-striped:not(.table) .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: rgba(0, 0, 0, 0.075);\n cursor: pointer; }\n .tabulator.table-striped:not(.table) .tabulator-row:nth-child(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 .tabulator-tableholder .tabulator-table .tabulator-row.table-primary {\n background: theme-color-level(\"primary\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary {\n background: theme-color-level(\"secondary\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success {\n background: theme-color-level(\"success\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info {\n background: theme-color-level(\"info\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning {\n background: theme-color-level(\"warning\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger {\n background: theme-color-level(\"danger\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light {\n background: theme-color-level(\"light\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table {\n background: theme-color-level(\"dark\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active {\n background: rgba(0, 0, 0, 0.1) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary {\n background: theme-color-level(\"primary\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary {\n background: theme-color-level(\"secondary\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success {\n background: theme-color-level(\"success\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info {\n background: theme-color-level(\"info\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning {\n background: theme-color-level(\"warning\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger {\n background: theme-color-level(\"danger\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light {\n background: theme-color-level(\"light\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark {\n background: theme-color-level(\"dark\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active {\n background: rgba(0, 0, 0, 0.1) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: theme-color-level(\"primary\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: theme-color-level(\"secondary\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: theme-color-level(\"success\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: theme-color-level(\"info\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: theme-color-level(\"warning\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: theme-color-level(\"danger\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: theme-color-level(\"light\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table {\n background: theme-color-level(\"dark\", -9) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: rgba(0, 0, 0, 0.1) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: theme-color-level(\"primary\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: theme-color-level(\"secondary\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: theme-color-level(\"success\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: theme-color-level(\"info\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: theme-color-level(\"warning\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: theme-color-level(\"danger\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: theme-color-level(\"light\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: theme-color-level(\"dark\", 0) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: rgba(0, 0, 0, 0.1) !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: transparent; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: transparent; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: transparent; }\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/dist/css/tabulator_bulma.css b/dist/css/tabulator_bulma.css index b9d577eb2..c902ab2f6 100644 --- a/dist/css/tabulator_bulma.css +++ b/dist/css/tabulator_bulma.css @@ -68,11 +68,11 @@ padding: 4px; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { +.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-menu-button:hover { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { cursor: pointer; opacity: .6; } @@ -98,7 +98,7 @@ background: #fff; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { width: calc(100% - 22px); } @@ -127,10 +127,6 @@ margin-right: -1px; } -.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator .tabulator-header .tabulator-col .tabulator-header-filter { position: relative; box-sizing: border-box; @@ -415,23 +411,25 @@ } .tabulator .tabulator-col-resize-handle { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 5px; -} - -.tabulator .tabulator-col-resize-handle.prev { - left: 0; - right: auto; + position: relative; + display: inline-block; + width: 6px; + margin-left: -3px; + margin-right: -3px; + z-index: 10; + vertical-align: middle; } .tabulator .tabulator-col-resize-handle:hover { cursor: ew-resize; } -.tabulator .tabulator-loader { +.tabulator .tabulator-col-resize-handle:last-of-type { + width: 3px; + margin-right: 0; +} + +.tabulator .tabulator-alert { position: absolute; display: flex; align-items: center; @@ -444,7 +442,7 @@ text-align: center; } -.tabulator .tabulator-loader .tabulator-loader-msg { +.tabulator .tabulator-alert .tabulator-alert-msg { display: inline-block; margin: 0 auto; padding: 10px 20px; @@ -454,12 +452,12 @@ font-size: 16px; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { border: 4px solid #333; color: #000; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { border: 4px solid #D00; color: #590000; } @@ -579,6 +577,7 @@ .tabulator-row .tabulator-cell.tabulator-editing select { border: 1px; background: transparent; + outline: none; } .tabulator-row .tabulator-cell.tabulator-validation-fail { @@ -592,10 +591,6 @@ color: #dd0000; } -.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator-row .tabulator-cell.tabulator-row-handle { display: inline-flex; align-items: center; @@ -790,7 +785,7 @@ color: #d00; } -.tabulator-menu { +.tabulator-popup-container { position: absolute; display: inline-block; box-sizing: border-box; @@ -803,6 +798,20 @@ 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; @@ -842,50 +851,45 @@ border-top: 1px solid #aaa; } -.tabulator-edit-select-list { - position: absolute; - display: inline-block; - box-sizing: border-box; +.tabulator-edit-list { max-height: 200px; - background: transparent; - border: 1px solid #aaa; font-size: 16px; overflow-y: auto; -webkit-overflow-scrolling: touch; - z-index: 10000; } -.tabulator-edit-select-list .tabulator-edit-select-list-item { +.tabulator-edit-list .tabulator-edit-list-item { padding: 4px; color: #363636; + outline: none; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { +.tabulator-edit-list .tabulator-edit-list-item.active { color: transparent; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { +.tabulator-edit-list .tabulator-edit-list-item.active.focused { outline: 1px solid rgba(0, 0, 0, 0.5); } -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { +.tabulator-edit-list .tabulator-edit-list-item.focused { outline: 1px solid #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { +.tabulator-edit-list .tabulator-edit-list-item:hover { cursor: pointer; color: transparent; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-notice { +.tabulator-edit-list .tabulator-edit-list-placeholder { padding: 4px; color: #363636; text-align: center; } -.tabulator-edit-select-list .tabulator-edit-select-list-group { +.tabulator-edit-list .tabulator-edit-list-group { border-bottom: 1px solid #aaa; padding: 4px; padding-top: 6px; @@ -893,6 +897,26 @@ 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; } @@ -942,17 +966,6 @@ margin-left: 5px; } -.tabulator.tabulator-rtl .tabulator-col-resize-handle { - position: absolute; - left: 0; - right: auto; -} - -.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { - right: 0; - left: auto; -} - .tabulator-print-fullscreen { position: absolute; top: 0; diff --git a/dist/css/tabulator_bulma.css.map b/dist/css/tabulator_bulma.css.map index f158a89f8..ecbf362c9 100644 --- a/dist/css/tabulator_bulma.css.map +++ b/dist/css/tabulator_bulma.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: transparent;\n border: 1px solid #aaa;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #363636; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #363636;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #363636;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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"]} \ No newline at end of file +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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"]} \ No newline at end of file diff --git a/dist/css/tabulator_bulma.min.css b/dist/css/tabulator_bulma.min.css index 3af454f21..01b109b0e 100644 --- a/dist/css/tabulator_bulma.min.css +++ b/dist/css/tabulator_bulma.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;border:1px solid #999;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:transparent;color:#363636;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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:transparent;pointer-events:none}.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-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev{display:none}.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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:transparent}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:rgba(13,13,13,0)!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #999;background-color:transparent;color:#363636;font-weight:700;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:calc(100% + 20px);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{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:400}.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-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{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}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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}.tabulator-row.tabulator-selectable:hover{background-color:#fafafa;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#00d1b2}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.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}.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}.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{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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-right:1px solid #aaa;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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-menu{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,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.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}.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-color:#aaa;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:transparent;border:1px solid #aaa;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#363636}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:transparent;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid rgba(0,0,0,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:transparent;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#363636;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:6px 4px 4px;color:#363636;font-weight:700}.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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.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{border-right:1px solid #aaa;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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: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{padding:.5em .75em;border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-5px -10px 10px;border: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 .1875em;padding:calc(.375em - 1px) .75em;border:1px solid #dbdbdb;font-size:16px}.tabulator .tabulator-footer .tabulator-page.active{border-color:#4a4a4a;color:#363636;font-weight:700}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;border-color:#b5b5b5;background:inherit;color:inherit}.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}.tabulator-row.tabulator-selected:hover{background-color:#009e86!important}.tabulator-row .tabulator-cell{padding:.5em .75em;border:solid #dbdbdb;border-width:0 0 1px}.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{position:relative;border:1px solid #999;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:transparent;color:#363636;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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:transparent;pointer-events:none}.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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:transparent}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:rgba(13,13,13,0)!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #999;background-color:transparent;color:#363636;font-weight:700;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:calc(100% + 20px);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{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:400}.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-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{background:rgba(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:10;vertical-align:middle}.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,.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:700;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}.tabulator-row.tabulator-selectable:hover{background-color:#fafafa;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#00d1b2}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.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}.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 #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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-right:1px solid #aaa;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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,.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}.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-color:#aaa;border-style:solid;border-width:1px 1px 0 0;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,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}.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:6px 4px 4px;color:#363636;font-weight:700}.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{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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.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{border-right:1px solid #aaa;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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: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{padding:.5em .75em;border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-5px -10px 10px;border: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 .1875em;padding:calc(.375em - 1px) .75em;border:1px solid #dbdbdb;font-size:16px}.tabulator .tabulator-footer .tabulator-page.active{border-color:#4a4a4a;color:#363636;font-weight:700}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;border-color:#b5b5b5;background:inherit;color:inherit}.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}.tabulator-row.tabulator-selected:hover{background-color:#009e86!important}.tabulator-row .tabulator-cell{padding:.5em .75em;border:solid #dbdbdb;border-width:0 0 1px}.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} /*# sourceMappingURL=tabulator_bulma.min.css.map */ \ No newline at end of file diff --git a/dist/css/tabulator_bulma.min.css.map b/dist/css/tabulator_bulma.min.css.map index e487fa855..c1e68ce44 100644 --- a/dist/css/tabulator_bulma.min.css.map +++ b/dist/css/tabulator_bulma.min.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: transparent;\n border: 1px solid #aaa;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #363636; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #363636;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #363636;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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"]} \ No newline at end of file +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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"]} \ No newline at end of file diff --git a/dist/css/tabulator_materialize.css b/dist/css/tabulator_materialize.css index 8e50af018..a85061b68 100644 --- a/dist/css/tabulator_materialize.css +++ b/dist/css/tabulator_materialize.css @@ -68,11 +68,11 @@ padding: 4px; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { +.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-menu-button:hover { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { cursor: pointer; opacity: .6; } @@ -98,7 +98,7 @@ background: #fff; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { width: calc(100% - 22px); } @@ -127,10 +127,6 @@ margin-right: -1px; } -.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator .tabulator-header .tabulator-col .tabulator-header-filter { position: relative; box-sizing: border-box; @@ -415,23 +411,25 @@ } .tabulator .tabulator-col-resize-handle { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 5px; -} - -.tabulator .tabulator-col-resize-handle.prev { - left: 0; - right: auto; + position: relative; + display: inline-block; + width: 6px; + margin-left: -3px; + margin-right: -3px; + z-index: 10; + vertical-align: middle; } .tabulator .tabulator-col-resize-handle:hover { cursor: ew-resize; } -.tabulator .tabulator-loader { +.tabulator .tabulator-col-resize-handle:last-of-type { + width: 3px; + margin-right: 0; +} + +.tabulator .tabulator-alert { position: absolute; display: flex; align-items: center; @@ -444,7 +442,7 @@ text-align: center; } -.tabulator .tabulator-loader .tabulator-loader-msg { +.tabulator .tabulator-alert .tabulator-alert-msg { display: inline-block; margin: 0 auto; padding: 10px 20px; @@ -454,12 +452,12 @@ font-size: 16px; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { border: 4px solid #333; color: #000; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { border: 4px solid #D00; color: #590000; } @@ -579,6 +577,7 @@ .tabulator-row .tabulator-cell.tabulator-editing select { border: 1px; background: transparent; + outline: none; } .tabulator-row .tabulator-cell.tabulator-validation-fail { @@ -592,10 +591,6 @@ color: #dd0000; } -.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator-row .tabulator-cell.tabulator-row-handle { display: inline-flex; align-items: center; @@ -790,7 +785,7 @@ color: #d00; } -.tabulator-menu { +.tabulator-popup-container { position: absolute; display: inline-block; box-sizing: border-box; @@ -803,6 +798,20 @@ 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; @@ -842,50 +851,45 @@ border-top: 1px solid rgba(0, 0, 0, 0.12); } -.tabulator-edit-select-list { - position: absolute; - display: inline-block; - box-sizing: border-box; +.tabulator-edit-list { max-height: 200px; - background: transparent; - border: 1px solid rgba(0, 0, 0, 0.12); font-size: 16px; overflow-y: auto; -webkit-overflow-scrolling: touch; - z-index: 10000; } -.tabulator-edit-select-list .tabulator-edit-select-list-item { +.tabulator-edit-list .tabulator-edit-list-item { padding: 4px; color: #333; + outline: none; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { +.tabulator-edit-list .tabulator-edit-list-item.active { color: transparent; background: #ee6e73; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { +.tabulator-edit-list .tabulator-edit-list-item.active.focused { outline: 1px solid rgba(0, 0, 0, 0.5); } -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { +.tabulator-edit-list .tabulator-edit-list-item.focused { outline: 1px solid #ee6e73; } -.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { +.tabulator-edit-list .tabulator-edit-list-item:hover { cursor: pointer; color: transparent; background: #ee6e73; } -.tabulator-edit-select-list .tabulator-edit-select-list-notice { +.tabulator-edit-list .tabulator-edit-list-placeholder { padding: 4px; color: #333; text-align: center; } -.tabulator-edit-select-list .tabulator-edit-select-list-group { +.tabulator-edit-list .tabulator-edit-list-group { border-bottom: 1px solid rgba(0, 0, 0, 0.12); padding: 4px; padding-top: 6px; @@ -893,6 +897,26 @@ 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; } @@ -942,17 +966,6 @@ margin-left: 5px; } -.tabulator.tabulator-rtl .tabulator-col-resize-handle { - position: absolute; - left: 0; - right: auto; -} - -.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { - right: 0; - left: auto; -} - .tabulator-print-fullscreen { position: absolute; top: 0; diff --git a/dist/css/tabulator_materialize.css.map b/dist/css/tabulator_materialize.css.map index 0570bb7e5..4b328e23e 100644 --- a/dist/css/tabulator_materialize.css.map +++ b/dist/css/tabulator_materialize.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: rgba(229, 229, 229, 0.5) !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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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: rgba(242, 242, 242, 0.5); }\n .tabulator-row.tabulator-selectable:hover {\n background-color: rgba(242, 242, 242, 0.5);\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #ee6e73; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: transparent;\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 .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 .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: rgba(242, 242, 242, 0.5); }\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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid rgba(0, 0, 0, 0.12); }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: transparent;\n border: 1px solid rgba(0, 0, 0, 0.12);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: transparent;\n background: #ee6e73; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #ee6e73; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #ee6e73; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-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\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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: rgba(242, 242, 242, 0.5); }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #ee6e73 !important; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: rgba(242, 242, 242, 0.5);\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: transparent; }\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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: rgba(229, 229, 229, 0.5) !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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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: rgba(242, 242, 242, 0.5); }\n .tabulator-row.tabulator-selectable:hover {\n background-color: rgba(242, 242, 242, 0.5);\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #ee6e73; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\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 .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-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 .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: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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: transparent;\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 .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: rgba(242, 242, 242, 0.5); }\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: transparent;\n background: #ee6e73; }\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 #ee6e73; }\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: transparent;\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\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 .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 .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: rgba(242, 242, 242, 0.5); }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #ee6e73 !important; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: rgba(242, 242, 242, 0.5);\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: transparent; }\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 .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/dist/css/tabulator_materialize.min.css b/dist/css/tabulator_materialize.min.css index 6d0b443e4..4aa744acc 100644 --- a/dist/css/tabulator_materialize.min.css +++ b/dist/css/tabulator_materialize.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;border:1px solid rgba(0,0,0,.12);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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid rgba(0,0,0,.12);background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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,.12);background:#e6e6e6;pointer-events:none}.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-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev{display:none}.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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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{box-sizing:border-box;min-width:600%;background:#fff!important;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid #aaa;overflow:hidden}.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-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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:hsla(0,0%,89.8%,.5)!important}.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-footer{border-top:1px solid rgba(0,0,0,.12);background-color:#e6e6e6;color:#555;font-weight:700;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:calc(100% + 20px);text-align:left;background:#f3f3f3!important;border-bottom:1px solid rgba(0,0,0,.12);border-top:1px solid rgba(0,0,0,.12);overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{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:400}.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,.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,.12);border-radius:3px}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{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}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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:hsla(0,0%,94.9%,.5)}.tabulator-row.tabulator-selectable:hover{background-color:hsla(0,0%,94.9%,.5);cursor:pointer}.tabulator-row.tabulator-selected{background-color:#ee6e73}.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,.12);border-bottom:1px solid rgba(0,0,0,.12);pointer-events:none;z-index:15}.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}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid rgba(0,0,0,.12)}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid rgba(0,0,0,.12)}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(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,.12);vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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}.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{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.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-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,.12);border-bottom:2px solid rgba(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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:transparent;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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,.12);border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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{color:#d00}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:transparent;border:1px solid rgba(0,0,0,.12);box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.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}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:hsla(0,0%,94.9%,.5)}.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-color:rgba(0,0,0,.12);border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid rgba(0,0,0,.12)}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:transparent;border:1px solid rgba(0,0,0,.12);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:transparent;background:#ee6e73}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid rgba(0,0,0,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #ee6e73}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:transparent;background:#ee6e73}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid rgba(0,0,0,.12);padding:6px 4px 4px;color:#333;font-weight:700}.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:0;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:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid rgba(0,0,0,.12)}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid rgba(0,0,0,.12)}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.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,.12);border-bottom:2px solid rgba(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,.12);border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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{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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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,.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,.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:5px 0 0;padding:8px 12px;border-radius:0;border-right:none;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page:first-of-type,.tabulator .tabulator-footer .tabulator-page[data-page=next]{border-top-left-radius:4px;border-bottom-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-top-right-radius:4px;border-bottom-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{color:#ee6e73}.tabulator.striped .tabulator-row:nth-child(2n){background-color:hsla(0,0%,94.9%,.5)}.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selected{background-color:#ee6e73!important}.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selectable:hover{background-color:hsla(0,0%,94.9%,.5);cursor:pointer}.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selected:hover{background-color:#ee6e73!important;cursor:pointer}.tabulator-row{min-height:46px;border-bottom:1px solid rgba(0,0,0,.12)}.tabulator-row.tabulator-row-even{background-color:transparent}.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,.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{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 hsla(0,0%,100%,.5)}.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{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,.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{position:relative;border:1px solid rgba(0,0,0,.12);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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid rgba(0,0,0,.12);background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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,.12);background:#e6e6e6;pointer-events:none}.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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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{box-sizing:border-box;min-width:600%;background:#fff!important;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid #aaa;overflow:hidden}.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-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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:hsla(0,0%,89.8%,.5)!important}.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-footer{border-top:1px solid rgba(0,0,0,.12);background-color:#e6e6e6;color:#555;font-weight:700;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:calc(100% + 20px);text-align:left;background:#f3f3f3!important;border-bottom:1px solid rgba(0,0,0,.12);border-top:1px solid rgba(0,0,0,.12);overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{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:400}.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,.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,.12);border-radius:3px}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(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:10;vertical-align:middle}.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,.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:700;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:hsla(0,0%,94.9%,.5)}.tabulator-row.tabulator-selectable:hover{background-color:hsla(0,0%,94.9%,.5);cursor:pointer}.tabulator-row.tabulator-selected{background-color:#ee6e73}.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,.12);border-bottom:1px solid rgba(0,0,0,.12);pointer-events:none;z-index:15}.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}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid rgba(0,0,0,.12)}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid rgba(0,0,0,.12)}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(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,.12);vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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 #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.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-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,.12);border-bottom:2px solid rgba(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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:transparent;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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,.12);border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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{color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:transparent;border:1px solid rgba(0,0,0,.12);box-shadow:0 0 5px 0 rgba(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}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:hsla(0,0%,94.9%,.5)}.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-color:rgba(0,0,0,.12);border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid rgba(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:transparent;background:#ee6e73}.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 #ee6e73}.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:transparent;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,.12);padding:6px 4px 4px;color:#333;font-weight:700}.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{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:0;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:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid rgba(0,0,0,.12)}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid rgba(0,0,0,.12)}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.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,.12);border-bottom:2px solid rgba(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,.12);border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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{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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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,.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,.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:5px 0 0;padding:8px 12px;border-radius:0;border-right:none;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page:first-of-type,.tabulator .tabulator-footer .tabulator-page[data-page=next]{border-top-left-radius:4px;border-bottom-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-top-right-radius:4px;border-bottom-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{color:#ee6e73}.tabulator.striped .tabulator-row:nth-child(2n){background-color:hsla(0,0%,94.9%,.5)}.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selected{background-color:#ee6e73!important}.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selectable:hover{background-color:hsla(0,0%,94.9%,.5);cursor:pointer}.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selected:hover{background-color:#ee6e73!important;cursor:pointer}.tabulator-row{min-height:46px;border-bottom:1px solid rgba(0,0,0,.12)}.tabulator-row.tabulator-row-even{background-color:transparent}.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,.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{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 hsla(0,0%,100%,.5)}.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{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,.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/dist/css/tabulator_materialize.min.css.map b/dist/css/tabulator_materialize.min.css.map index 0c810cac0..927f6328f 100644 --- a/dist/css/tabulator_materialize.min.css.map +++ b/dist/css/tabulator_materialize.min.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: rgba(229, 229, 229, 0.5) !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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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: rgba(242, 242, 242, 0.5); }\n .tabulator-row.tabulator-selectable:hover {\n background-color: rgba(242, 242, 242, 0.5);\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #ee6e73; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: transparent;\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 .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 .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: rgba(242, 242, 242, 0.5); }\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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid rgba(0, 0, 0, 0.12); }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: transparent;\n border: 1px solid rgba(0, 0, 0, 0.12);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: transparent;\n background: #ee6e73; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #ee6e73; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #ee6e73; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-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\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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: rgba(242, 242, 242, 0.5); }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #ee6e73 !important; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: rgba(242, 242, 242, 0.5);\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: transparent; }\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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: rgba(229, 229, 229, 0.5) !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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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: rgba(242, 242, 242, 0.5); }\n .tabulator-row.tabulator-selectable:hover {\n background-color: rgba(242, 242, 242, 0.5);\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #ee6e73; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\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 .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-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 .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: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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: transparent;\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 .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: rgba(242, 242, 242, 0.5); }\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: transparent;\n background: #ee6e73; }\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 #ee6e73; }\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: transparent;\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\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 .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 .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: rgba(242, 242, 242, 0.5); }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #ee6e73 !important; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: rgba(242, 242, 242, 0.5);\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: transparent; }\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 .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/dist/css/tabulator_midnight.css b/dist/css/tabulator_midnight.css index b519f7989..183d05bfa 100644 --- a/dist/css/tabulator_midnight.css +++ b/dist/css/tabulator_midnight.css @@ -68,11 +68,11 @@ padding: 4px; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { +.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-menu-button:hover { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { cursor: pointer; opacity: .6; } @@ -98,7 +98,7 @@ background: #fff; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { width: calc(100% - 22px); } @@ -127,10 +127,6 @@ margin-right: -1px; } -.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator .tabulator-header .tabulator-col .tabulator-header-filter { position: relative; box-sizing: border-box; @@ -415,23 +411,25 @@ } .tabulator .tabulator-col-resize-handle { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 5px; -} - -.tabulator .tabulator-col-resize-handle.prev { - left: 0; - right: auto; + position: relative; + display: inline-block; + width: 6px; + margin-left: -3px; + margin-right: -3px; + z-index: 10; + vertical-align: middle; } .tabulator .tabulator-col-resize-handle:hover { cursor: ew-resize; } -.tabulator .tabulator-loader { +.tabulator .tabulator-col-resize-handle:last-of-type { + width: 3px; + margin-right: 0; +} + +.tabulator .tabulator-alert { position: absolute; display: flex; align-items: center; @@ -444,7 +442,7 @@ text-align: center; } -.tabulator .tabulator-loader .tabulator-loader-msg { +.tabulator .tabulator-alert .tabulator-alert-msg { display: inline-block; margin: 0 auto; padding: 10px 20px; @@ -454,12 +452,12 @@ font-size: 16px; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { border: 4px solid #333; color: #000; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { border: 4px solid #D00; color: #590000; } @@ -579,6 +577,7 @@ .tabulator-row .tabulator-cell.tabulator-editing select { border: 1px; background: transparent; + outline: none; } .tabulator-row .tabulator-cell.tabulator-validation-fail { @@ -592,10 +591,6 @@ color: #dd0000; } -.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator-row .tabulator-cell.tabulator-row-handle { display: inline-flex; align-items: center; @@ -790,7 +785,7 @@ color: #d00; } -.tabulator-menu { +.tabulator-popup-container { position: absolute; display: inline-block; box-sizing: border-box; @@ -803,6 +798,20 @@ 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; @@ -842,50 +851,45 @@ border-top: 1px solid #888; } -.tabulator-edit-select-list { - position: absolute; - display: inline-block; - box-sizing: border-box; +.tabulator-edit-list { max-height: 200px; - background: #666; - border: 1px solid #888; font-size: 14px; overflow-y: auto; -webkit-overflow-scrolling: touch; - z-index: 10000; } -.tabulator-edit-select-list .tabulator-edit-select-list-item { +.tabulator-edit-list .tabulator-edit-list-item { padding: 4px; color: #fff; + outline: none; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { +.tabulator-edit-list .tabulator-edit-list-item.active { color: #666; background: #999; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { +.tabulator-edit-list .tabulator-edit-list-item.active.focused { outline: 1px solid rgba(102, 102, 102, 0.5); } -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { +.tabulator-edit-list .tabulator-edit-list-item.focused { outline: 1px solid #999; } -.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { +.tabulator-edit-list .tabulator-edit-list-item:hover { cursor: pointer; color: #666; background: #999; } -.tabulator-edit-select-list .tabulator-edit-select-list-notice { +.tabulator-edit-list .tabulator-edit-list-placeholder { padding: 4px; color: #fff; text-align: center; } -.tabulator-edit-select-list .tabulator-edit-select-list-group { +.tabulator-edit-list .tabulator-edit-list-group { border-bottom: 1px solid #888; padding: 4px; padding-top: 6px; @@ -893,6 +897,26 @@ 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; } @@ -942,17 +966,6 @@ margin-left: 5px; } -.tabulator.tabulator-rtl .tabulator-col-resize-handle { - position: absolute; - left: 0; - right: auto; -} - -.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { - right: 0; - left: auto; -} - .tabulator-print-fullscreen { position: absolute; top: 0; diff --git a/dist/css/tabulator_midnight.css.map b/dist/css/tabulator_midnight.css.map index e806f545e..05e79831f 100644 --- a/dist/css/tabulator_midnight.css.map +++ b/dist/css/tabulator_midnight.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #404040 !important;\n border-top: 1px solid #888;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #999;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #000; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #888; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #666;\n border: 1px solid #888;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #666;\n background: #999; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(102, 102, 102, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #999; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #666;\n background: #999; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #fff;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #888;\n padding: 4px;\n padding-top: 6px;\n color: #fff;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #404040 !important;\n border-top: 1px solid #888;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #999;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #000; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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/dist/css/tabulator_midnight.min.css b/dist/css/tabulator_midnight.min.css index 7d94aec6c..205458100 100644 --- a/dist/css/tabulator_midnight.min.css +++ b/dist/css/tabulator_midnight.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;border:1px solid #333;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#333;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev{display:none}.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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#1a1a1a}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#404040!important;border-top:1px solid #888;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #999;background-color:#333;color:#333;font-weight:700;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:calc(100% + 20px);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{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{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}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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}.tabulator-row.tabulator-selectable:hover{background-color:#999;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#000}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.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}.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}.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{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700}.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-menu{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,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.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}.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-color:#888;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #888}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#666;border:1px solid #888;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#666;background:#999}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,40%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #999}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#666;background:#999}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#fff;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #888;padding:6px 4px 4px;color:#fff;font-weight:700}.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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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,.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-weight:inherit;font-size:inherit}.tabulator-row.tabulator-group{min-width:100%;color:#333}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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 hsla(0,0%,60%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #444}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#999;background:#666}.tabulator-print-table .tabulator-print-table-group{color:#333} +.tabulator{position:relative;border:1px solid #333;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#333;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#1a1a1a}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#404040!important;border-top:1px solid #888;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #999;background-color:#333;color:#333;font-weight:700;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:calc(100% + 20px);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{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(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:10;vertical-align:middle}.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,.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:700;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}.tabulator-row.tabulator-selectable:hover{background-color:#999;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#000}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.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}.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 #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700}.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,.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}.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-color:#888;border-style:solid;border-width:1px 1px 0 0;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 hsla(0,0%,40%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #999}.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:6px 4px 4px;color:#fff;font-weight:700}.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{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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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,.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-weight:inherit;font-size:inherit}.tabulator-row.tabulator-group{min-width:100%;color:#333}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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 hsla(0,0%,60%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #444}.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.min.css.map */ \ No newline at end of file diff --git a/dist/css/tabulator_midnight.min.css.map b/dist/css/tabulator_midnight.min.css.map index 17e0e12b6..fe23fdcbb 100644 --- a/dist/css/tabulator_midnight.min.css.map +++ b/dist/css/tabulator_midnight.min.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #404040 !important;\n border-top: 1px solid #888;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #999;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #000; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #888; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #666;\n border: 1px solid #888;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #666;\n background: #999; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(102, 102, 102, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #999; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #666;\n background: #999; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #fff;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #888;\n padding: 4px;\n padding-top: 6px;\n color: #fff;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #404040 !important;\n border-top: 1px solid #888;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #999;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #000; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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/dist/css/tabulator_modern.css b/dist/css/tabulator_modern.css index 2a6e0697b..3c6aeaaa2 100644 --- a/dist/css/tabulator_modern.css +++ b/dist/css/tabulator_modern.css @@ -68,11 +68,11 @@ padding: 4px; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { +.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-menu-button:hover { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { cursor: pointer; opacity: .6; } @@ -98,7 +98,7 @@ background: #fff; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { width: calc(100% - 22px); } @@ -127,10 +127,6 @@ margin-right: -1px; } -.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator .tabulator-header .tabulator-col .tabulator-header-filter { position: relative; box-sizing: border-box; @@ -415,23 +411,25 @@ } .tabulator .tabulator-col-resize-handle { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 5px; -} - -.tabulator .tabulator-col-resize-handle.prev { - left: 0; - right: auto; + position: relative; + display: inline-block; + width: 6px; + margin-left: -3px; + margin-right: -3px; + z-index: 10; + vertical-align: middle; } .tabulator .tabulator-col-resize-handle:hover { cursor: ew-resize; } -.tabulator .tabulator-loader { +.tabulator .tabulator-col-resize-handle:last-of-type { + width: 3px; + margin-right: 0; +} + +.tabulator .tabulator-alert { position: absolute; display: flex; align-items: center; @@ -444,7 +442,7 @@ text-align: center; } -.tabulator .tabulator-loader .tabulator-loader-msg { +.tabulator .tabulator-alert .tabulator-alert-msg { display: inline-block; margin: 0 auto; padding: 10px 20px; @@ -454,12 +452,12 @@ font-size: 16px; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { border: 4px solid #333; color: #000; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { border: 4px solid #D00; color: #590000; } @@ -579,6 +577,7 @@ .tabulator-row .tabulator-cell.tabulator-editing select { border: 1px; background: transparent; + outline: none; } .tabulator-row .tabulator-cell.tabulator-validation-fail { @@ -592,10 +591,6 @@ color: #dd0000; } -.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator-row .tabulator-cell.tabulator-row-handle { display: inline-flex; align-items: center; @@ -790,7 +785,7 @@ color: #d00; } -.tabulator-menu { +.tabulator-popup-container { position: absolute; display: inline-block; box-sizing: border-box; @@ -803,6 +798,20 @@ 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; @@ -842,50 +851,45 @@ border-top: 1px solid #fff; } -.tabulator-edit-select-list { - position: absolute; - display: inline-block; - box-sizing: border-box; +.tabulator-edit-list { max-height: 200px; - background: #f3f3f3; - border: 1px solid #fff; font-size: 16px; overflow-y: auto; -webkit-overflow-scrolling: touch; - z-index: 10000; } -.tabulator-edit-select-list .tabulator-edit-select-list-item { +.tabulator-edit-list .tabulator-edit-list-item { padding: 4px; color: #333; + outline: none; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { +.tabulator-edit-list .tabulator-edit-list-item.active { color: #f3f3f3; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { +.tabulator-edit-list .tabulator-edit-list-item.active.focused { outline: 1px solid rgba(243, 243, 243, 0.5); } -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { +.tabulator-edit-list .tabulator-edit-list-item.focused { outline: 1px solid #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { +.tabulator-edit-list .tabulator-edit-list-item:hover { cursor: pointer; color: #f3f3f3; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-notice { +.tabulator-edit-list .tabulator-edit-list-placeholder { padding: 4px; color: #333; text-align: center; } -.tabulator-edit-select-list .tabulator-edit-select-list-group { +.tabulator-edit-list .tabulator-edit-list-group { border-bottom: 1px solid #fff; padding: 4px; padding-top: 6px; @@ -893,6 +897,26 @@ 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; } @@ -942,17 +966,6 @@ margin-left: 5px; } -.tabulator.tabulator-rtl .tabulator-col-resize-handle { - position: absolute; - left: 0; - right: auto; -} - -.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { - right: 0; - left: auto; -} - .tabulator-print-fullscreen { position: absolute; top: 0; diff --git a/dist/css/tabulator_modern.css.map b/dist/css/tabulator_modern.css.map index 9a3a28609..1b1efe315 100644 --- a/dist/css/tabulator_modern.css.map +++ b/dist/css/tabulator_modern.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #fff; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #f3f3f3;\n border: 1px solid #fff;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #f3f3f3;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(243, 243, 243, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #f3f3f3;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #fff;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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 .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/dist/css/tabulator_modern.min.css b/dist/css/tabulator_modern.min.css index e02d2314d..d9a9bbbc7 100644 --- a/dist/css/tabulator_modern.min.css +++ b/dist/css/tabulator_modern.min.css @@ -1,2 +1,2 @@ -.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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #3759d7;background-color:#fff;color:#3759d7;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev{display:none}.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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#b7c3f1}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#fff!important;border-top:1px solid #fff;border-bottom:1px solid #fff;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #999;background-color:#fff;color:#3759d7;font-weight:700;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:calc(100% + 20px);text-align:left;background:#fff!important;border-bottom:1px solid #fff;border-top:1px solid #fff;overflow:hidden}.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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#3759d7}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{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}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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}.tabulator-row.tabulator-selectable:hover{background-color:#bbb}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #fff}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.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}.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}.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{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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-menu{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,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.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}.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-color:#fff;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #fff}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#f3f3f3;border:1px solid #fff;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,95.3%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #fff;padding:6px 4px 4px;color:#333;font-weight:700}.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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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 .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:#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}.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}.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} +.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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #3759d7;background-color:#fff;color:#3759d7;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#b7c3f1}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#fff!important;border-top:1px solid #fff;border-bottom:1px solid #fff;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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-footer{border-top:1px solid #999;background-color:#fff;color:#3759d7;font-weight:700;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:calc(100% + 20px);text-align:left;background:#fff!important;border-bottom:1px solid #fff;border-top:1px solid #fff;overflow:hidden}.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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#3759d7}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(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:10;vertical-align:middle}.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,.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:700;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}.tabulator-row.tabulator-selectable:hover{background-color:#bbb}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #fff}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.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}.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 #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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,.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}.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-color:#fff;border-style:solid;border-width:1px 1px 0 0;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 hsla(0,0%,95.3%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}.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:6px 4px 4px;color:#333;font-weight:700}.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{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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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 .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:#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}.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}.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.min.css.map */ \ No newline at end of file diff --git a/dist/css/tabulator_modern.min.css.map b/dist/css/tabulator_modern.min.css.map index c37162547..7d193f34f 100644 --- a/dist/css/tabulator_modern.min.css.map +++ b/dist/css/tabulator_modern.min.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #fff; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #f3f3f3;\n border: 1px solid #fff;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #f3f3f3;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(243, 243, 243, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #f3f3f3;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #fff;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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 .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/dist/css/tabulator_semanticui.css b/dist/css/tabulator_semanticui.css index a8da3fa82..145cbb3c6 100644 --- a/dist/css/tabulator_semanticui.css +++ b/dist/css/tabulator_semanticui.css @@ -414,11 +414,11 @@ padding: 4px; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { +.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-menu-button:hover { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { cursor: pointer; opacity: .6; } @@ -444,7 +444,7 @@ background: #fff; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { width: calc(100% - 22px); } @@ -473,10 +473,6 @@ margin-right: -1px; } -.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator .tabulator-header .tabulator-col .tabulator-header-filter { position: relative; box-sizing: border-box; @@ -761,23 +757,25 @@ } .tabulator .tabulator-col-resize-handle { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 5px; -} - -.tabulator .tabulator-col-resize-handle.prev { - left: 0; - right: auto; + position: relative; + display: inline-block; + width: 6px; + margin-left: -3px; + margin-right: -3px; + z-index: 10; + vertical-align: middle; } .tabulator .tabulator-col-resize-handle:hover { cursor: ew-resize; } -.tabulator .tabulator-loader { +.tabulator .tabulator-col-resize-handle:last-of-type { + width: 3px; + margin-right: 0; +} + +.tabulator .tabulator-alert { position: absolute; display: flex; align-items: center; @@ -790,7 +788,7 @@ text-align: center; } -.tabulator .tabulator-loader .tabulator-loader-msg { +.tabulator .tabulator-alert .tabulator-alert-msg { display: inline-block; margin: 0 auto; padding: 10px 20px; @@ -800,12 +798,12 @@ font-size: 16px; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { border: 4px solid #333; color: #000; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { border: 4px solid #D00; color: #590000; } @@ -925,6 +923,7 @@ .tabulator-row .tabulator-cell.tabulator-editing select { border: 1px; background: transparent; + outline: none; } .tabulator-row .tabulator-cell.tabulator-validation-fail { @@ -938,10 +937,6 @@ color: #DB2828; } -.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator-row .tabulator-cell.tabulator-row-handle { display: inline-flex; align-items: center; @@ -1136,7 +1131,7 @@ color: #d00; } -.tabulator-menu { +.tabulator-popup-container { position: absolute; display: inline-block; box-sizing: border-box; @@ -1149,6 +1144,20 @@ 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; @@ -1188,50 +1197,45 @@ border-top: 1px solid #ddd; } -.tabulator-edit-select-list { - position: absolute; - display: inline-block; - box-sizing: border-box; +.tabulator-edit-list { max-height: 200px; - background: #fff; - border: 1px solid #ddd; font-size: 14px; overflow-y: auto; -webkit-overflow-scrolling: touch; - z-index: 10000; } -.tabulator-edit-select-list .tabulator-edit-select-list-item { +.tabulator-edit-list .tabulator-edit-list-item { padding: 4px; color: #333; + outline: none; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { +.tabulator-edit-list .tabulator-edit-list-item.active { color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { +.tabulator-edit-list .tabulator-edit-list-item.active.focused { outline: 1px solid rgba(255, 255, 255, 0.5); } -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { +.tabulator-edit-list .tabulator-edit-list-item.focused { outline: 1px solid #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { +.tabulator-edit-list .tabulator-edit-list-item:hover { cursor: pointer; color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-notice { +.tabulator-edit-list .tabulator-edit-list-placeholder { padding: 4px; color: #333; text-align: center; } -.tabulator-edit-select-list .tabulator-edit-select-list-group { +.tabulator-edit-list .tabulator-edit-list-group { border-bottom: 1px solid #ddd; padding: 4px; padding-top: 6px; @@ -1239,6 +1243,26 @@ 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; } @@ -1288,17 +1312,6 @@ margin-left: 5px; } -.tabulator.tabulator-rtl .tabulator-col-resize-handle { - position: absolute; - left: 0; - right: auto; -} - -.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { - right: 0; - left: auto; -} - .tabulator-print-fullscreen { position: absolute; top: 0; diff --git a/dist/css/tabulator_semanticui.css.map b/dist/css/tabulator_semanticui.css.map index a02e6ee72..dc42f8e0a 100644 --- a/dist/css/tabulator_semanticui.css.map +++ b/dist/css/tabulator_semanticui.css.map @@ -1 +1 @@ -{"version":3,"sources":["tabulator_semanticui.scss"],"names":[],"mappings":"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","file":"tabulator_semanticui.css","sourcesContent":["/*******************************\r\n Site Settings\r\n*******************************/\n/*-------------------\r\n Fonts\r\n--------------------*/\n/*-------------------\r\n Base Sizes\r\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\r\n Exact Pixel Values\r\n--------------------*/\n/*\r\n These are used to specify exact pixel values in em\r\n for things like borders that remain constantly\r\n sized as emSize adjusts\r\n\r\n Since there are many more sizes than names for sizes,\r\n these are named by their original pixel values.\r\n\r\n*/\n/*-------------------\r\n Border Radius\r\n--------------------*/\n/* See Power-user section below\r\n for explanation of $px variables\r\n*/\n/*-------------------\r\n Site Colors\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\r\n Alpha Colors\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*--------------\r\n Page Heading\r\n---------------*/\n/*-------------------\r\n Page\r\n--------------------*/\n/*--------------\r\n Form Input\r\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/*-------------------\r\n Focused Input\r\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\r\n Sizes\r\n--------------------*/\n/*\r\n Sizes are all expressed in terms of 14px/em (default em)\r\n This ensures these \"ratios\" remain constant despite changes in EM\r\n*/\n/*-------------------\r\n Paragraph\r\n--------------------*/\n/*-------------------\r\n Links\r\n--------------------*/\n/*-------------------\r\n Highlighted Text\r\n--------------------*/\n/*-------------------\r\n Em Sizes\r\n--------------------*/\n/*\r\n This rounds $size values to the closest pixel then expresses that value in (r)em.\r\n This ensures all size values round to exact pixels\r\n*/\n/* em */\n/* rem */\n/*-------------------\r\n Loader\r\n--------------------*/\n/*-------------------\r\n Grid\r\n--------------------*/\n/*-------------------\r\n Transitions\r\n--------------------*/\n/*-------------------\r\n Breakpoints\r\n--------------------*/\n/* Columns */\n/*******************************\r\n Power-User\r\n*******************************/\n/*-------------------\r\n Emotive Colors\r\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\r\n Paths\r\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\r\n Icons\r\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\r\n Neutral Text\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*-------------------\r\n Borders\r\n--------------------*/\n/*-------------------\r\n Accents\r\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\r\n Derived Values\r\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/*******************************\r\n States\r\n*******************************/\n/*-------------------\r\n Disabled\r\n--------------------*/\n/*-------------------\r\n Hover\r\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Focus\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Down (:active)\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Active\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\r\n Table\r\n*******************************/\n/*-------------------\r\n Element\r\n--------------------*/\n/*--------------\r\n Parts\r\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\r\n Types\r\n--------------------*/\n/* Definition */\n/*--------------\r\n Couplings\r\n---------------*/\n/*--------------\r\n States\r\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\r\n Types\r\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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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 .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 .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 .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.disabled:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\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: rgba(0, 0, 0, 0.05); }\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: transparent; }\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 .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 .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 .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 +{"version":3,"sources":["tabulator_semanticui.scss"],"names":[],"mappings":"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","file":"tabulator_semanticui.css","sourcesContent":["/*******************************\r\n Site Settings\r\n*******************************/\n/*-------------------\r\n Fonts\r\n--------------------*/\n/*-------------------\r\n Base Sizes\r\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\r\n Exact Pixel Values\r\n--------------------*/\n/*\r\n These are used to specify exact pixel values in em\r\n for things like borders that remain constantly\r\n sized as emSize adjusts\r\n\r\n Since there are many more sizes than names for sizes,\r\n these are named by their original pixel values.\r\n\r\n*/\n/*-------------------\r\n Border Radius\r\n--------------------*/\n/* See Power-user section below\r\n for explanation of $px variables\r\n*/\n/*-------------------\r\n Site Colors\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\r\n Alpha Colors\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*--------------\r\n Page Heading\r\n---------------*/\n/*-------------------\r\n Page\r\n--------------------*/\n/*--------------\r\n Form Input\r\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/*-------------------\r\n Focused Input\r\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\r\n Sizes\r\n--------------------*/\n/*\r\n Sizes are all expressed in terms of 14px/em (default em)\r\n This ensures these \"ratios\" remain constant despite changes in EM\r\n*/\n/*-------------------\r\n Paragraph\r\n--------------------*/\n/*-------------------\r\n Links\r\n--------------------*/\n/*-------------------\r\n Highlighted Text\r\n--------------------*/\n/*-------------------\r\n Em Sizes\r\n--------------------*/\n/*\r\n This rounds $size values to the closest pixel then expresses that value in (r)em.\r\n This ensures all size values round to exact pixels\r\n*/\n/* em */\n/* rem */\n/*-------------------\r\n Loader\r\n--------------------*/\n/*-------------------\r\n Grid\r\n--------------------*/\n/*-------------------\r\n Transitions\r\n--------------------*/\n/*-------------------\r\n Breakpoints\r\n--------------------*/\n/* Columns */\n/*******************************\r\n Power-User\r\n*******************************/\n/*-------------------\r\n Emotive Colors\r\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\r\n Paths\r\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\r\n Icons\r\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\r\n Neutral Text\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*-------------------\r\n Borders\r\n--------------------*/\n/*-------------------\r\n Accents\r\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\r\n Derived Values\r\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/*******************************\r\n States\r\n*******************************/\n/*-------------------\r\n Disabled\r\n--------------------*/\n/*-------------------\r\n Hover\r\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Focus\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Down (:active)\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Active\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\r\n Table\r\n*******************************/\n/*-------------------\r\n Element\r\n--------------------*/\n/*--------------\r\n Parts\r\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\r\n Types\r\n--------------------*/\n/* Definition */\n/*--------------\r\n Couplings\r\n---------------*/\n/*--------------\r\n States\r\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\r\n Types\r\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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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 .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 .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 .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.disabled:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\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: rgba(0, 0, 0, 0.05); }\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: transparent; }\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 .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 .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 .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/dist/css/tabulator_semanticui.min.css b/dist/css/tabulator_semanticui.min.css index 17ea2885f..ce45e1eec 100644 --- a/dist/css/tabulator_semanticui.min.css +++ b/dist/css/tabulator_semanticui.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev{display:none}.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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#dae1e7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;background:#e2e2e2!important}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;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:calc(100% + 20px);text-align:left;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.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{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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{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}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.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;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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}.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:first-child .tabulator-col-resize-handle.prev{display:none}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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-menu{position:absolute;display:inline-block;box-sizing:border-box;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.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}.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-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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 0;border:1px solid rgba(34,36,38,.15);box-shadow:none;border-radius:.28571rem;color:rgba(0,0,0,.87)}.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{border-right:none;background-color:#f9fafb}.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{padding:.78571em;border-top:1px solid rgba(34,36,38,.15);box-shadow:none;background:#f9fafb;text-align:right;color:rgba(0,0,0,.87);font-style:normal;font-weight:400;text-transform:none}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-.78571em -.78571em .78571em;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-.78571em;border-bottom:none}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive{box-shadow:inset 0 0 0 #a3c293;background:#fcfff5!important;color:#21ba45!important}.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:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}.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:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}.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 .tabulator-cell.warning,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning{box-shadow:inset 0 0 0 #c9ba9b;background:#fffaf3!important;color:#f2c037!important}.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.active,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.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.disabled:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active{pointer-events:none;color:rgba(0,0,0,.2)}.tabulator.inverted{background:#333;color:hsla(0,0%,100%,.9);border:none}.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{color:hsla(0,0%,100%,.9);border:none}.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:rgba(0,0,0,.05)}.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:transparent}.tabulator-row.tabulator-selectable:hover{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.tabulator-row.tabulator-selected{background-color:#9abcea!important}.tabulator-row.tabulator-selected:hover{background-color:#769bcc!important;cursor:pointer}.tabulator-row.tabulator-moving{pointer-events:none!important}.tabulator-row .tabulator-cell{padding:.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:#fff}.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)}.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} +.tabulator{position:relative;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#dae1e7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;background:#e2e2e2!important}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;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:calc(100% + 20px);text-align:left;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.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{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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(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:10;vertical-align:middle}.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,.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:700;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}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.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;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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,.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}.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-color:#ddd;border-style:solid;border-width:1px 1px 0 0;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 hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}.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:6px 4px 4px;color:#333;font-weight:700}.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{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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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 0;border:1px solid rgba(34,36,38,.15);box-shadow:none;border-radius:.28571rem;color:rgba(0,0,0,.87)}.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{border-right:none;background-color:#f9fafb}.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{padding:.78571em;border-top:1px solid rgba(34,36,38,.15);box-shadow:none;background:#f9fafb;text-align:right;color:rgba(0,0,0,.87);font-style:normal;font-weight:400;text-transform:none}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-.78571em -.78571em .78571em;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-.78571em;border-bottom:none}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive{box-shadow:inset 0 0 0 #a3c293;background:#fcfff5!important;color:#21ba45!important}.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:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}.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:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}.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 .tabulator-cell.warning,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning{box-shadow:inset 0 0 0 #c9ba9b;background:#fffaf3!important;color:#f2c037!important}.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.active,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.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.disabled:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active{pointer-events:none;color:rgba(0,0,0,.2)}.tabulator.inverted{background:#333;color:hsla(0,0%,100%,.9);border:none}.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{color:hsla(0,0%,100%,.9);border:none}.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:rgba(0,0,0,.05)}.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:transparent}.tabulator-row.tabulator-selectable:hover{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.tabulator-row.tabulator-selected{background-color:#9abcea!important}.tabulator-row.tabulator-selected:hover{background-color:#769bcc!important;cursor:pointer}.tabulator-row.tabulator-moving{pointer-events:none!important}.tabulator-row .tabulator-cell{padding:.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:#fff}.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)}.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/dist/css/tabulator_semanticui.min.css.map b/dist/css/tabulator_semanticui.min.css.map index 82066ab1a..e4757980a 100644 --- a/dist/css/tabulator_semanticui.min.css.map +++ b/dist/css/tabulator_semanticui.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["tabulator_semanticui.scss"],"names":[],"mappings":"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","file":"tabulator_semanticui.min.css","sourcesContent":["/*******************************\r\n Site Settings\r\n*******************************/\n/*-------------------\r\n Fonts\r\n--------------------*/\n/*-------------------\r\n Base Sizes\r\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\r\n Exact Pixel Values\r\n--------------------*/\n/*\r\n These are used to specify exact pixel values in em\r\n for things like borders that remain constantly\r\n sized as emSize adjusts\r\n\r\n Since there are many more sizes than names for sizes,\r\n these are named by their original pixel values.\r\n\r\n*/\n/*-------------------\r\n Border Radius\r\n--------------------*/\n/* See Power-user section below\r\n for explanation of $px variables\r\n*/\n/*-------------------\r\n Site Colors\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\r\n Alpha Colors\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*--------------\r\n Page Heading\r\n---------------*/\n/*-------------------\r\n Page\r\n--------------------*/\n/*--------------\r\n Form Input\r\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/*-------------------\r\n Focused Input\r\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\r\n Sizes\r\n--------------------*/\n/*\r\n Sizes are all expressed in terms of 14px/em (default em)\r\n This ensures these \"ratios\" remain constant despite changes in EM\r\n*/\n/*-------------------\r\n Paragraph\r\n--------------------*/\n/*-------------------\r\n Links\r\n--------------------*/\n/*-------------------\r\n Highlighted Text\r\n--------------------*/\n/*-------------------\r\n Em Sizes\r\n--------------------*/\n/*\r\n This rounds $size values to the closest pixel then expresses that value in (r)em.\r\n This ensures all size values round to exact pixels\r\n*/\n/* em */\n/* rem */\n/*-------------------\r\n Loader\r\n--------------------*/\n/*-------------------\r\n Grid\r\n--------------------*/\n/*-------------------\r\n Transitions\r\n--------------------*/\n/*-------------------\r\n Breakpoints\r\n--------------------*/\n/* Columns */\n/*******************************\r\n Power-User\r\n*******************************/\n/*-------------------\r\n Emotive Colors\r\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\r\n Paths\r\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\r\n Icons\r\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\r\n Neutral Text\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*-------------------\r\n Borders\r\n--------------------*/\n/*-------------------\r\n Accents\r\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\r\n Derived Values\r\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/*******************************\r\n States\r\n*******************************/\n/*-------------------\r\n Disabled\r\n--------------------*/\n/*-------------------\r\n Hover\r\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Focus\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Down (:active)\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Active\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\r\n Table\r\n*******************************/\n/*-------------------\r\n Element\r\n--------------------*/\n/*--------------\r\n Parts\r\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\r\n Types\r\n--------------------*/\n/* Definition */\n/*--------------\r\n Couplings\r\n---------------*/\n/*--------------\r\n States\r\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\r\n Types\r\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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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 .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 .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 .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.disabled:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\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: rgba(0, 0, 0, 0.05); }\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: transparent; }\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 .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 .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 .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 +{"version":3,"sources":["tabulator_semanticui.scss"],"names":[],"mappings":"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BAA2B,CAC7B,iBACE,6BAAiC,CACnC,0BACE,kCAAoC,CACpC,oBAA2B,CAC7B,0EACE,WAAkB,CAClB,2FACE,QAAW,CACf,yFACE,WAAkB,CACpB,+EACE,aAAsB,CACtB,gGACE,QAAW,CACf,8FACE,aAAsB,CACxB,2EACE,iBAAsB,CACtB,4FACE,QAAW,CACf,0FACE,iBAAsB,CACxB,gFACE,iBAAsB,CACtB,iGACE,QAAW,CACf,+FACE,iBAAsB,CAE1B,eACE,yCAAgD,CAChD,kCACE,4BAA+B,CACjC,0CACE,sCAAiD,CACjD,4BAA8B,CAC9B,+BAAuC,CACzC,kCACE,kCAAsC,CACxC,wCACE,kCAAoC,CACpC,cAAiB,CACnB,gCACE,6BAAiC,CACnC,+BACE,gBAA4B,CAC5B,iBAAkB,CAClB,qBAAwB,CACxB,4CACE,iBAAoB,CACtB,qEACE,UAAa,CACjB,+BACE,kBAAqB,CACrB,oCACE,UAAa,CAEnB,gBACE,eAAqB,CACrB,8EACE,kBAAqB,CAEzB,4BACE,eAAqB,CACrB,oEACE,UAAgB,CAChB,4EACE,oCAA6C,CACjD,mEACE,UAAgB,CAClB,+DACE,aAAgB,CAEpB,oDACE,kBAAqB,CACrB,yDACE,UAAa","file":"tabulator_semanticui.min.css","sourcesContent":["/*******************************\r\n Site Settings\r\n*******************************/\n/*-------------------\r\n Fonts\r\n--------------------*/\n/*-------------------\r\n Base Sizes\r\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\r\n Exact Pixel Values\r\n--------------------*/\n/*\r\n These are used to specify exact pixel values in em\r\n for things like borders that remain constantly\r\n sized as emSize adjusts\r\n\r\n Since there are many more sizes than names for sizes,\r\n these are named by their original pixel values.\r\n\r\n*/\n/*-------------------\r\n Border Radius\r\n--------------------*/\n/* See Power-user section below\r\n for explanation of $px variables\r\n*/\n/*-------------------\r\n Site Colors\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\r\n Alpha Colors\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*--------------\r\n Page Heading\r\n---------------*/\n/*-------------------\r\n Page\r\n--------------------*/\n/*--------------\r\n Form Input\r\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/*-------------------\r\n Focused Input\r\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\r\n Sizes\r\n--------------------*/\n/*\r\n Sizes are all expressed in terms of 14px/em (default em)\r\n This ensures these \"ratios\" remain constant despite changes in EM\r\n*/\n/*-------------------\r\n Paragraph\r\n--------------------*/\n/*-------------------\r\n Links\r\n--------------------*/\n/*-------------------\r\n Highlighted Text\r\n--------------------*/\n/*-------------------\r\n Em Sizes\r\n--------------------*/\n/*\r\n This rounds $size values to the closest pixel then expresses that value in (r)em.\r\n This ensures all size values round to exact pixels\r\n*/\n/* em */\n/* rem */\n/*-------------------\r\n Loader\r\n--------------------*/\n/*-------------------\r\n Grid\r\n--------------------*/\n/*-------------------\r\n Transitions\r\n--------------------*/\n/*-------------------\r\n Breakpoints\r\n--------------------*/\n/* Columns */\n/*******************************\r\n Power-User\r\n*******************************/\n/*-------------------\r\n Emotive Colors\r\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\r\n Paths\r\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\r\n Icons\r\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\r\n Neutral Text\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*-------------------\r\n Borders\r\n--------------------*/\n/*-------------------\r\n Accents\r\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\r\n Derived Values\r\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/*******************************\r\n States\r\n*******************************/\n/*-------------------\r\n Disabled\r\n--------------------*/\n/*-------------------\r\n Hover\r\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Focus\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Down (:active)\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Active\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\r\n Table\r\n*******************************/\n/*-------------------\r\n Element\r\n--------------------*/\n/*--------------\r\n Parts\r\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\r\n Types\r\n--------------------*/\n/* Definition */\n/*--------------\r\n Couplings\r\n---------------*/\n/*--------------\r\n States\r\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\r\n Types\r\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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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 .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 .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 .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.disabled:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\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: rgba(0, 0, 0, 0.05); }\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: transparent; }\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 .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 .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 .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/dist/css/tabulator_simple.css b/dist/css/tabulator_simple.css index 2645cc539..0e6818220 100644 --- a/dist/css/tabulator_simple.css +++ b/dist/css/tabulator_simple.css @@ -68,11 +68,11 @@ padding: 4px; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { +.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-menu-button:hover { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { cursor: pointer; opacity: .6; } @@ -98,7 +98,7 @@ background: #fff; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { width: calc(100% - 22px); } @@ -127,10 +127,6 @@ margin-right: -1px; } -.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator .tabulator-header .tabulator-col .tabulator-header-filter { position: relative; box-sizing: border-box; @@ -415,23 +411,25 @@ } .tabulator .tabulator-col-resize-handle { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 5px; -} - -.tabulator .tabulator-col-resize-handle.prev { - left: 0; - right: auto; + position: relative; + display: inline-block; + width: 6px; + margin-left: -3px; + margin-right: -3px; + z-index: 10; + vertical-align: middle; } .tabulator .tabulator-col-resize-handle:hover { cursor: ew-resize; } -.tabulator .tabulator-loader { +.tabulator .tabulator-col-resize-handle:last-of-type { + width: 3px; + margin-right: 0; +} + +.tabulator .tabulator-alert { position: absolute; display: flex; align-items: center; @@ -444,7 +442,7 @@ text-align: center; } -.tabulator .tabulator-loader .tabulator-loader-msg { +.tabulator .tabulator-alert .tabulator-alert-msg { display: inline-block; margin: 0 auto; padding: 10px 20px; @@ -454,12 +452,12 @@ font-size: 16px; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { border: 4px solid #333; color: #000; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { border: 4px solid #D00; color: #590000; } @@ -579,6 +577,7 @@ .tabulator-row .tabulator-cell.tabulator-editing select { border: 1px; background: transparent; + outline: none; } .tabulator-row .tabulator-cell.tabulator-validation-fail { @@ -592,10 +591,6 @@ color: #dd0000; } -.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator-row .tabulator-cell.tabulator-row-handle { display: inline-flex; align-items: center; @@ -790,7 +785,7 @@ color: #d00; } -.tabulator-menu { +.tabulator-popup-container { position: absolute; display: inline-block; box-sizing: border-box; @@ -803,6 +798,20 @@ 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; @@ -842,50 +851,45 @@ border-top: 1px solid #ddd; } -.tabulator-edit-select-list { - position: absolute; - display: inline-block; - box-sizing: border-box; +.tabulator-edit-list { max-height: 200px; - background: #fff; - border: 1px solid #ddd; font-size: 14px; overflow-y: auto; -webkit-overflow-scrolling: touch; - z-index: 10000; } -.tabulator-edit-select-list .tabulator-edit-select-list-item { +.tabulator-edit-list .tabulator-edit-list-item { padding: 4px; color: #333; + outline: none; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { +.tabulator-edit-list .tabulator-edit-list-item.active { color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { +.tabulator-edit-list .tabulator-edit-list-item.active.focused { outline: 1px solid rgba(255, 255, 255, 0.5); } -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { +.tabulator-edit-list .tabulator-edit-list-item.focused { outline: 1px solid #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { +.tabulator-edit-list .tabulator-edit-list-item:hover { cursor: pointer; color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-notice { +.tabulator-edit-list .tabulator-edit-list-placeholder { padding: 4px; color: #333; text-align: center; } -.tabulator-edit-select-list .tabulator-edit-select-list-group { +.tabulator-edit-list .tabulator-edit-list-group { border-bottom: 1px solid #ddd; padding: 4px; padding-top: 6px; @@ -893,6 +897,26 @@ 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; } @@ -942,17 +966,6 @@ margin-left: 5px; } -.tabulator.tabulator-rtl .tabulator-col-resize-handle { - position: absolute; - left: 0; - right: auto; -} - -.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { - right: 0; - left: auto; -} - .tabulator-print-fullscreen { position: absolute; top: 0; diff --git a/dist/css/tabulator_simple.css.map b/dist/css/tabulator_simple.css.map index 82a2a8dab..cbeeb5327 100644 --- a/dist/css/tabulator_simple.css.map +++ b/dist/css/tabulator_simple.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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/dist/css/tabulator_simple.min.css b/dist/css/tabulator_simple.min.css index eddb4b43f..d4214bb2e 100644 --- a/dist/css/tabulator_simple.min.css +++ b/dist/css/tabulator_simple.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;border:1px solid #999;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev{display:none}.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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;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:calc(100% + 20px);text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{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}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px}.tabulator-row,.tabulator-row.tabulator-row-even{background-color:#fff}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.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}.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}.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{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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-menu{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,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.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}.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-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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{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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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} +.tabulator{position:relative;border:1px solid #999;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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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:700;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{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;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:calc(100% + 20px);text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(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:10;vertical-align:middle}.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,.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:700;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}.tabulator-row,.tabulator-row.tabulator-row-even{background-color:#fff}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.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}.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 #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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,.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}.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-color:#ddd;border-style:solid;border-width:1px 1px 0 0;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 hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}.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:6px 4px 4px;color:#333;font-weight:700}.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{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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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{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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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.min.css.map */ \ No newline at end of file diff --git a/dist/css/tabulator_simple.min.css.map b/dist/css/tabulator_simple.min.css.map index fb52e0759..93ea67d52 100644 --- a/dist/css/tabulator_simple.min.css.map +++ b/dist/css/tabulator_simple.min.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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/dist/css/tabulator_site.css b/dist/css/tabulator_site.css index 6b809d530..6b3af08ac 100644 --- a/dist/css/tabulator_site.css +++ b/dist/css/tabulator_site.css @@ -68,11 +68,11 @@ padding: 4px; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button { +.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-menu-button:hover { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { cursor: pointer; opacity: .6; } @@ -98,7 +98,7 @@ background: #fff; } -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor { +.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { width: calc(100% - 22px); } @@ -127,10 +127,6 @@ margin-right: -1px; } -.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator .tabulator-header .tabulator-col .tabulator-header-filter { position: relative; box-sizing: border-box; @@ -415,23 +411,25 @@ } .tabulator .tabulator-col-resize-handle { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 5px; -} - -.tabulator .tabulator-col-resize-handle.prev { - left: 0; - right: auto; + position: relative; + display: inline-block; + width: 6px; + margin-left: -3px; + margin-right: -3px; + z-index: 10; + vertical-align: middle; } .tabulator .tabulator-col-resize-handle:hover { cursor: ew-resize; } -.tabulator .tabulator-loader { +.tabulator .tabulator-col-resize-handle:last-of-type { + width: 3px; + margin-right: 0; +} + +.tabulator .tabulator-alert { position: absolute; display: flex; align-items: center; @@ -444,7 +442,7 @@ text-align: center; } -.tabulator .tabulator-loader .tabulator-loader-msg { +.tabulator .tabulator-alert .tabulator-alert-msg { display: inline-block; margin: 0 auto; padding: 10px 20px; @@ -454,12 +452,12 @@ font-size: 16px; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { border: 4px solid #333; color: #000; } -.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error { +.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { border: 4px solid #D00; color: #590000; } @@ -579,6 +577,7 @@ .tabulator-row .tabulator-cell.tabulator-editing select { border: 1px; background: transparent; + outline: none; } .tabulator-row .tabulator-cell.tabulator-validation-fail { @@ -592,10 +591,6 @@ color: #dd0000; } -.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev { - display: none; -} - .tabulator-row .tabulator-cell.tabulator-row-handle { display: inline-flex; align-items: center; @@ -790,7 +785,7 @@ color: #d00; } -.tabulator-menu { +.tabulator-popup-container { position: absolute; display: inline-block; box-sizing: border-box; @@ -803,6 +798,20 @@ 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; @@ -842,50 +851,45 @@ border-top: 1px solid #aaa; } -.tabulator-edit-select-list { - position: absolute; - display: inline-block; - box-sizing: border-box; +.tabulator-edit-list { max-height: 200px; - background: #fff; - border: 1px solid #aaa; font-size: 14px; overflow-y: auto; -webkit-overflow-scrolling: touch; - z-index: 10000; } -.tabulator-edit-select-list .tabulator-edit-select-list-item { +.tabulator-edit-list .tabulator-edit-list-item { padding: 4px; color: #333; + outline: none; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { +.tabulator-edit-list .tabulator-edit-list-item.active { color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { +.tabulator-edit-list .tabulator-edit-list-item.active.focused { outline: 1px solid rgba(255, 255, 255, 0.5); } -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { +.tabulator-edit-list .tabulator-edit-list-item.focused { outline: 1px solid #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-item:hover { +.tabulator-edit-list .tabulator-edit-list-item:hover { cursor: pointer; color: #fff; background: #1D68CD; } -.tabulator-edit-select-list .tabulator-edit-select-list-notice { +.tabulator-edit-list .tabulator-edit-list-placeholder { padding: 4px; color: #333; text-align: center; } -.tabulator-edit-select-list .tabulator-edit-select-list-group { +.tabulator-edit-list .tabulator-edit-list-group { border-bottom: 1px solid #aaa; padding: 4px; padding-top: 6px; @@ -893,6 +897,26 @@ 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; } @@ -942,17 +966,6 @@ margin-left: 5px; } -.tabulator.tabulator-rtl .tabulator-col-resize-handle { - position: absolute; - left: 0; - right: auto; -} - -.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev { - right: 0; - left: auto; -} - .tabulator-print-fullscreen { position: absolute; top: 0; diff --git a/dist/css/tabulator_site.css.map b/dist/css/tabulator_site.css.map index 564879823..9b1eba5d4 100644 --- a/dist/css/tabulator_site.css.map +++ b/dist/css/tabulator_site.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #2f2f2f !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #aaa;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #2f2f2f !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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/dist/css/tabulator_site.min.css b/dist/css/tabulator_site.min.css index b39bffeb6..6b2ec63aa 100644 --- a/dist/css/tabulator_site.min.css +++ b/dist/css/tabulator_site.min.css @@ -1,2 +1,2 @@ -.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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #3fb449;background-color:#222;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev{display:none}.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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#2f2f2f!important;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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{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-footer{border-top:1px solid #3fb449;background-color:#222;color:#222;font-weight:700;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:calc(100% + 20px);text-align:left;background:#2f2f2f!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{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}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.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}.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}.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{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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-menu{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,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.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}.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-color:#aaa;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:6px 4px 4px;color:#333;font-weight:700}.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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.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 .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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;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:8px 10px 5px;border-top:3px solid #3fb449}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-8px -10px 8px;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-page-counter,.tabulator .tabulator-footer .tabulator-paginator label{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}.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}.tabulator-print-table .tabulator-print-table-group:hover{background-color:#090909}.tabulator-print-table .tabulator-print-table-group span{color:#3fb449} +.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-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #3fb449;background-color:#222;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;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-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-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}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.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=asc] .tabulator-col-content .tabulator-col-sorter{color:#3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .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=desc] .tabulator-col-content .tabulator-col-sorter{color:#3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .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{display:inline-block;position:absolute;z-index:10}.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;min-width:600%;background:#2f2f2f!important;border-bottom:1px solid #aaa;overflow:hidden}.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{min-width:600%}.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;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;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{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-footer{border-top:1px solid #3fb449;background-color:#222;color:#222;font-weight:700;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:calc(100% + 20px);text-align:left;background:#2f2f2f!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{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:400}.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:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(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:10;vertical-align:middle}.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,.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:700;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}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.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-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.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}.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 #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.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-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,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{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,.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-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(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,.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}.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-color:#aaa;border-style:solid;border-width:1px 1px 0 0;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 hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}.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:6px 4px 4px;color:#333;font-weight:700}.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{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:0;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:auto}.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:0;margin-left:5px;border-bottom-left-radius:0;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:0;margin-left:5px}.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 .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 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(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,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(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:700;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:8px 10px 5px;border-top:3px solid #3fb449}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-8px -10px 8px;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-page-counter,.tabulator .tabulator-footer .tabulator-paginator label{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}.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}.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/dist/css/tabulator_site.min.css.map b/dist/css/tabulator_site.min.css.map index 433902e6f..b1909b00a 100644 --- a/dist/css/tabulator_site.min.css.map +++ b/dist/css/tabulator_site.min.css.map @@ -1 +1 @@ -{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-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-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-menu-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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #2f2f2f !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\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-loader .tabulator-loader-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-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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 .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:first-child .tabulator-col-resize-handle.prev {\n display: none; }\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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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-menu {\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 .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 .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 .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #aaa;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\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-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\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 .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 .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 .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 .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 +{"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-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 .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\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-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-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 .tabulator .tabulator-header .tabulator-col.tabulator-sortable: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 .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=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .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=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .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 display: inline-block;\n position: absolute;\n z-index: 10; }\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 min-width: 600%;\n background: #2f2f2f !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\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 min-width: 600%; }\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 width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 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-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: calc(100% + 20px);\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 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 .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: 10;\n vertical-align: middle; }\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 .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\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-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 .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\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 .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-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 .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 .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\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 .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 .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 .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 .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\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 .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 .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 .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 .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/dist/js/tabulator.js b/dist/js/tabulator.js index fbf84789b..2b07557b5 100644 --- a/dist/js/tabulator.js +++ b/dist/js/tabulator.js @@ -1,4 +1,4 @@ -/* Tabulator v5.1.7 (c) Oliver Folkerd 2022 */ +/* Tabulator v5.2.2 (c) Oliver Folkerd 2022 */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -122,6 +122,10 @@ }; } + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } @@ -130,10 +134,41 @@ if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + function _iterableToArrayLimit(arr, i) { + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); @@ -155,6 +190,10 @@ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _createForOfIteratorHelper(o, allowArrayLike) { var it; @@ -219,6 +258,8 @@ //flag to console log events debugInvalidOptions: true, //allow toggling of invalid option warnings + debugInitialization: true, + //allow toggling of invalid option warnings height: false, //height of tabulator minHeight: false, @@ -227,6 +268,7 @@ //maximum height of tabulator columnHeaderVertAlign: "top", //vertical alignment of column headers + popupContainer: false, columns: [], //store for colum header info columnDefaults: {}, @@ -238,8 +280,6 @@ autoColumnsDefinitions: false, nestedFieldSeparator: ".", //separator for nested data - tooltipGenerationMode: "load", - //when to generate tooltips footerElement: false, //hold footer element index: "id", @@ -261,6 +301,7 @@ rowFormatterPrint: null, rowFormatterClipboard: null, rowFormatterHtmlOutput: null, + rowHeight: null, placeholder: false, dataLoader: true, dataLoaderLoading: false, @@ -626,10 +667,8 @@ "minWidth": 40, "maxWidth": undefined, "maxInitialWidth": undefined, - "tooltip": undefined, "cssClass": undefined, "variableHeight": undefined, - "headerTooltip": undefined, "headerVertical": undefined, "headerHozAlign": undefined, "editableTitle": undefined @@ -785,8 +824,6 @@ }, { key: "_configureCell", value: function _configureCell() { - var _this2 = this; - var element = this.element, field = this.column.getField(), vertAligns = { @@ -821,13 +858,6 @@ classNames.forEach(function (className) { element.classList.add(className); }); - } //update tooltip on mouse enter - - - if (this.table.options.tooltipGenerationMode === "hover") { - element.addEventListener("mouseenter", function (e) { - _this2._generateTooltip(); - }); } this.dispatch("cell-init", this); //hide cell if not visible @@ -840,11 +870,11 @@ }, { key: "_generateContents", value: function _generateContents() { - var _this3 = this; + var _this2 = this; var val; val = this.chain("cell-format", this, null, function () { - return _this3.element.innerHTML = _this3.value; + return _this2.element.innerHTML = _this2.value; }); switch (_typeof(val)) { @@ -879,32 +909,6 @@ key: "cellRendered", value: function cellRendered() { this.dispatch("cell-rendered", this); - } //generate tooltip text - - }, { - key: "_generateTooltip", - value: function _generateTooltip() { - var tooltip = this.column.tooltip; - - if (tooltip) { - if (tooltip === true) { - tooltip = this.value; - } else if (typeof tooltip == "function") { - tooltip = tooltip(this.getComponent()); - - if (tooltip === false) { - tooltip = ""; - } - } - - if (typeof tooltip === "undefined") { - tooltip = ""; - } - - this.element.setAttribute("title", tooltip); - } else { - this.element.setAttribute("title", ""); - } } //////////////////// Getters //////////////////// }, { @@ -933,8 +937,8 @@ }, { key: "setValue", - value: function setValue(value, mutate) { - var changed = this.setValueProcessData(value, mutate); + value: function setValue(value, mutate, force) { + var changed = this.setValueProcessData(value, mutate, force); if (changed) { this.dispatch("cell-value-updated", this); @@ -953,10 +957,10 @@ } }, { key: "setValueProcessData", - value: function setValueProcessData(value, mutate) { + value: function setValueProcessData(value, mutate, force) { var changed = false; - if (this.value !== value) { + if (this.value !== value || force) { changed = true; if (mutate) { @@ -990,8 +994,6 @@ value: function layoutElement() { this._generateContents(); - this._generateTooltip(); - this.dispatch("cell-layout", this); } }, { @@ -1034,12 +1036,14 @@ value: function clearHeight() { this.element.style.height = ""; this.height = null; + this.dispatch("cell-height", this, ""); } }, { key: "setHeight", value: function setHeight() { this.height = this.row.height; this.element.style.height = this.row.heightStyled; + this.dispatch("cell-height", this, this.row.heightStyled); } }, { key: "getHeight", @@ -1119,8 +1123,6 @@ _this.groupElement = _this.createGroupElement(); //column group holder element _this.isGroup = false; - _this.tooltip = false; //hold column tooltip - _this.hozAlign = ""; //horizontal text alignment _this.vertAlign = ""; //vert text alignment @@ -1256,46 +1258,11 @@ }, { key: "_mapDepricatedFunctionality", value: function _mapDepricatedFunctionality() {//all previously deprecated functionality removed in the 5.0 release - } - }, { - key: "setTooltip", - value: function setTooltip() { - var _this3 = this; - - var def = this.definition; //set header tooltips - - var tooltip = def.headerTooltip; - - if (tooltip) { - if (tooltip === true) { - if (def.field) { - this.langBind("columns|" + def.field, function (value) { - _this3.element.setAttribute("title", value || def.title); - }); - } else { - this.element.setAttribute("title", def.title); - } - } else { - if (typeof tooltip == "function") { - tooltip = tooltip(this.getComponent()); - - if (tooltip === false) { - tooltip = ""; - } - } - - this.element.setAttribute("title", tooltip); - } - } else { - this.element.setAttribute("title", ""); - } } //build header element }, { key: "_initialize", value: function _initialize() { - var _this4 = this; - var def = this.definition; while (this.element.firstChild) { @@ -1320,17 +1287,12 @@ this._buildColumnHeader(); } - this.setTooltip(); - this.dispatch("column-init", this); //update header tooltip on mouse enter - - this.element.addEventListener("mouseenter", function (e) { - _this4.setTooltip(); - }); + this.dispatch("column-init", this); } }, { key: "_bindEvents", value: function _bindEvents() { - var _this5 = this; + var _this3 = this; var def = this.definition, dblTap, @@ -1339,19 +1301,19 @@ if (typeof def.headerClick == "function") { this.element.addEventListener("click", function (e) { - def.headerClick(e, _this5.getComponent()); + def.headerClick(e, _this3.getComponent()); }); } if (typeof def.headerDblClick == "function") { this.element.addEventListener("dblclick", function (e) { - def.headerDblClick(e, _this5.getComponent()); + def.headerDblClick(e, _this3.getComponent()); }); } if (typeof def.headerContext == "function") { this.element.addEventListener("contextmenu", function (e) { - def.headerContext(e, _this5.getComponent()); + def.headerContext(e, _this3.getComponent()); }); } //setup header tap event bindings @@ -1365,7 +1327,7 @@ }); this.element.addEventListener("touchend", function (e) { if (tap) { - def.headerTap(e, _this5.getComponent()); + def.headerTap(e, _this3.getComponent()); } tap = false; @@ -1378,7 +1340,7 @@ if (dblTap) { clearTimeout(dblTap); dblTap = null; - def.headerDblTap(e, _this5.getComponent()); + def.headerDblTap(e, _this3.getComponent()); } else { dblTap = setTimeout(function () { clearTimeout(dblTap); @@ -1411,7 +1373,7 @@ }, { key: "_buildColumnHeader", value: function _buildColumnHeader() { - var _this6 = this; + var _this4 = this; var def = this.definition, table = this.table; @@ -1429,7 +1391,7 @@ if (def.cssClass) { var classeNames = def.cssClass.split(" "); classeNames.forEach(function (className) { - _this6.element.classList.add(className); + _this4.element.classList.add(className); }); } @@ -1448,9 +1410,7 @@ this.setMaxWidth(parseInt(def.maxWidth)); } - this.reinitializeWidth(); //set tooltip if present - - this.tooltip = this.definition.tooltip; //set orizontal text alignment + this.reinitializeWidth(); //set orizontal text alignment this.hozAlign = this.definition.hozAlign; this.vertAlign = this.definition.vertAlign; @@ -1474,7 +1434,7 @@ }, { key: "_buildColumnHeaderTitle", value: function _buildColumnHeaderTitle() { - var _this7 = this; + var _this5 = this; var def = this.definition; var titleHolderElement = document.createElement("div"); @@ -1490,7 +1450,7 @@ titleElement.addEventListener("change", function () { def.title = titleElement.value; - _this7.dispatchExternal("columnTitleChanged", _this7.getComponent()); + _this5.dispatchExternal("columnTitleChanged", _this5.getComponent()); }); titleHolderElement.appendChild(titleElement); @@ -1504,7 +1464,7 @@ } else { if (def.field) { this.langBind("columns|" + def.field, function (text) { - _this7._formatColumnHeaderTitle(titleHolderElement, text || def.title || " "); + _this5._formatColumnHeaderTitle(titleHolderElement, text || def.title || " "); }); } else { this._formatColumnHeaderTitle(titleHolderElement, def.title || " "); @@ -1544,7 +1504,7 @@ }, { key: "_buildGroupHeader", value: function _buildGroupHeader() { - var _this8 = this; + var _this6 = this; this.element.classList.add("tabulator-col-group"); this.element.setAttribute("role", "columngroup"); @@ -1553,7 +1513,7 @@ if (this.definition.cssClass) { var classeNames = this.definition.cssClass.split(" "); classeNames.forEach(function (className) { - _this8.element.classList.add(className); + _this6.element.classList.add(className); }); } @@ -1625,6 +1585,7 @@ 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"); } @@ -1637,6 +1598,7 @@ 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"; @@ -1666,6 +1628,7 @@ this.columns.forEach(function (column) { column.clearVerticalAlign(); }); + this.dispatch("column-height", this, ""); } }, { key: "bindModuleColumns", @@ -1981,40 +1944,40 @@ }, { key: "delete", value: function _delete() { - var _this9 = this; + var _this7 = this; return new Promise(function (resolve, reject) { - if (_this9.isGroup) { - _this9.columns.forEach(function (column) { + if (_this7.isGroup) { + _this7.columns.forEach(function (column) { column["delete"](); }); } - _this9.dispatch("column-delete", _this9); + _this7.dispatch("column-delete", _this7); - var cellCount = _this9.cells.length; + var cellCount = _this7.cells.length; for (var i = 0; i < cellCount; i++) { - _this9.cells[0]["delete"](); + _this7.cells[0]["delete"](); } - if (_this9.element.parentNode) { - _this9.element.parentNode.removeChild(_this9.element); + if (_this7.element.parentNode) { + _this7.element.parentNode.removeChild(_this7.element); } - _this9.element = false; - _this9.contentElement = false; - _this9.titleElement = false; - _this9.groupElement = false; + _this7.element = false; + _this7.contentElement = false; + _this7.titleElement = false; + _this7.groupElement = false; - if (_this9.parent.isGroup) { - _this9.parent.removeChild(_this9); + if (_this7.parent.isGroup) { + _this7.parent.removeChild(_this7); } - _this9.table.columnManager.deregisterColumn(_this9); + _this7.table.columnManager.deregisterColumn(_this7); - _this9.table.columnManager.renderer.rerenderColumns(true); + _this7.table.columnManager.renderer.rerenderColumns(true); resolve(); }); @@ -2025,6 +1988,8 @@ if (this.titleFormatterRendered) { this.titleFormatterRendered(); } + + this.dispatch("column-rendered", this); } //////////////// Cell Management ///////////////// //generate cell for this column @@ -2113,7 +2078,7 @@ }, { key: "updateDefinition", value: function updateDefinition(updates) { - var _this10 = this; + var _this8 = this; var definition; @@ -2122,11 +2087,11 @@ definition = Object.assign({}, this.getDefinition()); definition = Object.assign(definition, updates); return this.table.columnManager.addColumn(definition, false, this).then(function (column) { - if (definition.field == _this10.field) { - _this10.field = false; //cleair field name to prevent deletion of duplicate column from arrays + if (definition.field == _this8.field) { + _this8.field = false; //cleair field name to prevent deletion of duplicate column from arrays } - return _this10["delete"]().then(function () { + return _this8["delete"]().then(function () { return column.getComponent(); }); }); @@ -3938,7 +3903,7 @@ _this.manualHeight = false; //user has manually set row height - _this.outerHeight = 0; //holde lements outer height + _this.outerHeight = 0; //hold elements outer height _this.initialized = false; //element has been rendered @@ -4034,6 +3999,11 @@ this.normalizeHeight(true); } } + }, { + key: "deinitialize", + value: function deinitialize() { + this.initialized = false; + } }, { key: "deinitializeHeight", value: function deinitializeHeight() { @@ -4061,19 +4031,25 @@ key: "calcHeight", value: function calcHeight(force) { var maxHeight = 0, - minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0; - this.cells.forEach(function (cell) { - var height = cell.getHeight(); + minHeight; - if (height > maxHeight) { - maxHeight = height; - } - }); - - if (force) { - this.height = Math.max(maxHeight, minHeight); + if (this.table.options.rowHeight) { + this.height = this.table.options.rowHeight; } else { - this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight); + 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" : ""; @@ -4099,7 +4075,7 @@ }, { key: "normalizeHeight", value: function normalizeHeight(force) { - if (force) { + if (force && !this.table.options.rowHeight) { this.clearCellHeight(); } @@ -6188,7 +6164,6 @@ _this.containerElement = _this.createContainerElement(); //containing element _this.external = false; - _this.links = []; return _this; } @@ -6240,15 +6215,15 @@ } }, { key: "append", - value: function append(element, parent) { - this.activate(parent); + value: function append(element) { + this.activate(); this.containerElement.appendChild(element); this.table.rowManager.adjustTableSize(); } }, { key: "prepend", - value: function prepend(element, parent) { - this.activate(parent); + value: function prepend(element) { + this.activate(); this.element.insertBefore(element, this.element.firstChild); this.table.rowManager.adjustTableSize(); } @@ -6271,7 +6246,7 @@ } }, { key: "activate", - value: function activate(parent) { + value: function activate() { if (!this.active) { this.active = true; @@ -6280,17 +6255,11 @@ this.table.element.style.display = ''; } } - - if (parent) { - this.links.push(parent); - } } }, { key: "redraw", value: function redraw() { - this.links.forEach(function (link) { - link.footerRedraw(); - }); + this.dispatch("footer-redraw"); } }]); @@ -6376,7 +6345,7 @@ value: function pseudoMouseEnter(key, e, target) { if (this.pseudoTrackers[key].target !== target) { if (this.pseudoTrackers[key].target) { - this.dispatch(key + "-mouseleave", e, target); + this.dispatch(key + "-mouseleave", e, this.pseudoTrackers[key].target); } this.pseudoMouseLeave(key, e); @@ -6675,7 +6644,7 @@ } if (this.bindings[type][funcName]) { - console.warn("Unable to bind component handler, a matching function name is already bound", type, funcName, hanlder); + console.warn("Unable to bind component handler, a matching function name is already bound", type, funcName, handler); } else { this.bindings[type][funcName] = handler; } @@ -6683,7 +6652,7 @@ }, { key: "handle", value: function handle(type, component, name) { - if (this.bindings[type] && this.bindings[type][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("_")) { @@ -6707,13 +6676,7 @@ _classCallCheck(this, DataLoader); _this = _super.call(this, table); - _this.loaderElement = _this.createLoaderElement(); //loader message div - - _this.msgElement = _this.createMsgElement(); //message element - - _this.loadingElement = null; - _this.errorElement = null; - _this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request + _this.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request _this.loading = false; return _this; @@ -6721,45 +6684,7 @@ _createClass(DataLoader, [{ key: "initialize", - value: function initialize() { - var template; - this.loaderElement.appendChild(this.msgElement); - - if (this.table.options.dataLoaderLoading) { - if (typeof this.table.options.dataLoaderLoading == "string") { - template = document.createElement('template'); - template.innerHTML = this.table.options.dataLoaderLoading.trim(); - this.loadingElement = template.firstElementChild; - } else { - this.loadingElement = this.table.options.dataLoaderLoading; - } - } - - if (this.table.options.dataLoaderError) { - if (typeof this.table.options.dataLoaderError == "string") { - template = document.createElement('template'); - template.innerHTML = this.table.options.dataLoaderError.trim(); - this.errorElement = template.firstElementChild; - } else { - this.errorElement = this.table.options.dataLoaderError; - } - } - } - }, { - key: "createLoaderElement", - value: function createLoaderElement() { - var el = document.createElement("div"); - el.classList.add("tabulator-loader"); - return el; - } - }, { - key: "createMsgElement", - value: function createMsgElement() { - var el = document.createElement("div"); - el.classList.add("tabulator-loader-msg"); - el.setAttribute("role", "alert"); - return el; - } + value: function initialize() {} }, { key: "load", value: function load(data, params, config, replace, silent) { @@ -6776,7 +6701,7 @@ this.loading = true; if (!silent) { - this.showLoader(); + this.alertLoader(); } //get params for request @@ -6791,7 +6716,7 @@ var rowData = _this2.chain("data-loaded", response, null, response); if (requestNo == _this2.requestOrder) { - _this2.hideLoader(); + _this2.clearAlert(); if (rowData !== false) { _this2.dispatchExternal("dataLoaded", rowData); @@ -6807,11 +6732,11 @@ _this2.dispatchExternal("dataLoadError", error); if (!silent) { - _this2.showError(); + _this2.alertError(); } setTimeout(function () { - _this2.hideLoader(); + _this2.clearAlert(); }, _this2.table.options.dataLoaderErrorTimeout); })["finally"](function () { _this2.loading = false; @@ -6855,55 +6780,23 @@ this.requestOrder++; } }, { - key: "showLoader", - value: function showLoader() { + key: "alertLoader", + value: function alertLoader() { var shouldLoad = typeof this.table.options.dataLoader === "function" ? this.table.options.dataLoader() : this.table.options.dataLoader; if (shouldLoad) { - this.hideLoader(); - - while (this.msgElement.firstChild) { - this.msgElement.removeChild(this.msgElement.firstChild); - } - - this.msgElement.classList.remove("tabulator-error"); - this.msgElement.classList.add("tabulator-loading"); - - if (this.loadingElement) { - this.msgElement.appendChild(this.loadingElement); - } else { - this.msgElement.innerHTML = this.langText("data|loading"); - } - - this.table.element.appendChild(this.loaderElement); + this.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText("data|loading")); } } }, { - key: "showError", - value: function showError() { - this.hideLoader(); - - while (this.msgElement.firstChild) { - this.msgElement.removeChild(this.msgElement.firstChild); - } - - this.msgElement.classList.remove("tabulator-loading"); - this.msgElement.classList.add("tabulator-error"); - - if (this.errorElement) { - this.msgElement.appendChild(this.errorElement); - } else { - this.msgElement.innerHTML = this.langText("data|error"); - } - - this.table.element.appendChild(this.loaderElement); + key: "alertError", + value: function alertError() { + this.table.alertManager.alert(this.table.options.dataLoaderError || this.langText("data|error"), "error"); } }, { - key: "hideLoader", - value: function hideLoader() { - if (this.loaderElement.parentNode) { - this.loaderElement.parentNode.removeChild(this.loaderElement); - } + key: "clearAlert", + value: function clearAlert() { + this.table.alertManager.clear(); } }]); @@ -7290,124 +7183,447 @@ TableRegistry.tables = []; - var Module = /*#__PURE__*/function (_CoreFeature) { - _inherits(Module, _CoreFeature); + var Popup = /*#__PURE__*/function (_CoreFeature) { + _inherits(Popup, _CoreFeature); - var _super = _createSuper(Module); + var _super = _createSuper(Popup); - function Module(table, name) { + function Popup(table, element, parent) { var _this; - _classCallCheck(this, Module); + _classCallCheck(this, Popup); _this = _super.call(this, table); - _this._handler = null; + _this.element = element; + _this.container = _this._lookupContainer(); + _this.parent = parent; + _this.reversedX = false; + _this.childPopup = null; + _this.blurable = false; + _this.blurCallback = null; + _this.renderedCallback = null; + _this.visible = false; + + _this.element.classList.add("tabulator-popup-container"); + + _this.blurEvent = _this.hide.bind(_assertThisInitialized(_this), false); + _this.escEvent = _this._escapeCheck.bind(_assertThisInitialized(_this)); return _this; } - _createClass(Module, [{ - key: "initialize", - value: function initialize() {// setup module when table is initialized, to be overriden in module - } /////////////////////////////////// - ////// Options Registration /////// - /////////////////////////////////// + _createClass(Popup, [{ + key: "_lookupContainer", + value: function _lookupContainer() { + var container = this.table.options.popupContainer; - }, { - key: "registerTableOption", - value: function registerTableOption(key, value) { - this.table.optionsList.register(key, value); + 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; } }, { - key: "registerColumnOption", - value: function registerColumnOption(key, value) { - this.table.columnManager.optionsList.register(key, value); - } /////////////////////////////////// - /// Public Function Registation /// - /////////////////////////////////// + key: "_checkContainerIsParent", + value: function _checkContainerIsParent(container) { + var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.table.element; - }, { - key: "registerTableFunction", - value: function registerTableFunction(name, func) { - if (typeof this.table[name] === "undefined") { - this.table[name] = func; + if (container === element) { + return true; } else { - console.warn("Unable to bind table function, name already in use", name); + return element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false; } } }, { - key: "registerComponentFunction", - value: function registerComponentFunction(component, func, handler) { - return this.table.componentFunctionBinder.bind(component, func, handler); - } /////////////////////////////////// - ////////// Data Pipeline ////////// - /////////////////////////////////// - - }, { - key: "registerDataHandler", - value: function registerDataHandler(handler, priority) { - this.table.rowManager.registerDataPipelineHandler(handler, priority); - this._handler = handler; + key: "renderCallback", + value: function renderCallback(callback) { + this.renderedCallback = callback; } }, { - key: "registerDisplayHandler", - value: function registerDisplayHandler(handler, priority) { - this.table.rowManager.registerDisplayPipelineHandler(handler, priority); - this._handler = handler; + key: "containerEventCoords", + value: function 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) { + var parentOffset = Helpers.elOffset(this.container); + x -= parentOffset.left; + y -= parentOffset.top; + } + + return { + x: x, + y: y + }; } }, { - key: "refreshData", - value: function refreshData(renderInPosition, handler) { - if (!handler) { - handler = this._handler; - } + key: "elementPositionCoords", + value: function elementPositionCoords(element) { + var position = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "right"; + var offset = Helpers.elOffset(element), + containerOffset, + x, + y; - if (handler) { - this.table.rowManager.refreshActiveData(handler, false, renderInPosition); + if (this.container !== document.body) { + containerOffset = Helpers.elOffset(this.container); + offset.left -= containerOffset.left; + offset.top -= containerOffset.top; } - } - }]); - return Module; - }(CoreFeature); + switch (position) { + case "right": + x = offset.left + element.offsetWidth; + y = offset.top - 1; + break; - //resize columns to fit data they contain - function fitData (columns) { - this.table.columnManager.renderer.reinitializeColumnWidths(columns); + case "bottom": + x = offset.left; + y = offset.top + element.offsetHeight; + break; + } - if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) { - this.table.modules.responsiveLayout.update(); - } - } + return { + x: x, + y: y, + offset: offset + }; + } + }, { + key: "show", + value: function show(origin, position) { + var x, y, parentEl, parentOffset, coords; + + 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; + } - //resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable - function fitDataGeneral (columns) { - columns.forEach(function (column) { - column.reinitializeWidth(); - }); + this.element.style.top = y + "px"; + this.element.style.left = x + "px"; + this.container.appendChild(this.element); - if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) { - this.table.modules.responsiveLayout.update(); - } - } + if (typeof this.renderedCallback === "function") { + this.renderedCallback(); + } - //resize columns to fit data the contain and stretch last column to fill table - function fitDataStretch (columns) { - var _this = this; + this._fitToScreen(x, y, parentEl, parentOffset, position); - var colsWidth = 0, - tableWidth = this.table.rowManager.element.clientWidth, - gap = 0, - lastCol = false; - columns.forEach(function (column, i) { - if (!column.widthFixed) { - column.reinitializeWidth(); + this.visible = true; + return this; } + }, { + key: "_fitToScreen", + value: function _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 (_this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) { - lastCol = column; - } + if (x + this.element.offsetWidth >= this.container.offsetWidth || this.reversedX) { + this.element.style.left = ""; - if (column.visible) { + 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"; + } + } + } + }, { + key: "isVisible", + value: function isVisible() { + return this.visible; + } + }, { + key: "hideOnBlur", + value: function hideOnBlur(callback) { + var _this2 = this; + + this.blurable = true; + + if (this.visible) { + setTimeout(function () { + _this2.table.rowManager.element.addEventListener("scroll", _this2.blurEvent); + + _this2.subscribe("cell-editing", _this2.blurEvent); + + document.body.addEventListener("click", _this2.blurEvent); + document.body.addEventListener("contextmenu", _this2.blurEvent); + window.addEventListener("resize", _this2.blurEvent); + document.body.addEventListener("keydown", _this2.escEvent); + }, 100); + this.blurCallback = callback; + } + + return this; + } + }, { + key: "_escapeCheck", + value: function _escapeCheck(e) { + if (e.keyCode == 27) { + this.hide(); + } + } + }, { + key: "hide", + value: function hide() { + var silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + if (this.visible) { + if (this.blurable) { + document.body.removeEventListener("keydown", this.escEvent); + document.body.removeEventListener("click", this.blurEvent); + document.body.removeEventListener("contextmenu", this.blurEvent); + window.removeEventListener("resize", this.blurEvent); + this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); + this.unsubscribe("cell-editing", this.blurEvent); + } + + 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(); + } + } + + return this; + } + }, { + key: "child", + value: function child(element) { + if (this.childPopup) { + this.childPopup.hide(); + } + + this.childPopup = new Popup(this.table, element, this); + return this.childPopup; + } + }]); + + return Popup; + }(CoreFeature); + + var Module = /*#__PURE__*/function (_CoreFeature) { + _inherits(Module, _CoreFeature); + + var _super = _createSuper(Module); + + function Module(table, name) { + var _this; + + _classCallCheck(this, Module); + + _this = _super.call(this, table); + _this._handler = null; + return _this; + } + + _createClass(Module, [{ + key: "initialize", + value: function initialize() {// setup module when table is initialized, to be overriden in module + } /////////////////////////////////// + ////// Options Registration /////// + /////////////////////////////////// + + }, { + key: "registerTableOption", + value: function registerTableOption(key, value) { + this.table.optionsList.register(key, value); + } + }, { + key: "registerColumnOption", + value: function registerColumnOption(key, value) { + this.table.columnManager.optionsList.register(key, value); + } /////////////////////////////////// + /// Public Function Registration /// + /////////////////////////////////// + + }, { + key: "registerTableFunction", + value: function registerTableFunction(name, func) { + var _this2 = this; + + if (typeof this.table[name] === "undefined") { + this.table[name] = function () { + _this2.table.initGuard(name); + + return func.apply(void 0, arguments); + }; + } else { + console.warn("Unable to bind table function, name already in use", name); + } + } + }, { + key: "registerComponentFunction", + value: function registerComponentFunction(component, func, handler) { + return this.table.componentFunctionBinder.bind(component, func, handler); + } /////////////////////////////////// + ////////// Data Pipeline ////////// + /////////////////////////////////// + + }, { + key: "registerDataHandler", + value: function registerDataHandler(handler, priority) { + this.table.rowManager.registerDataPipelineHandler(handler, priority); + this._handler = handler; + } + }, { + key: "registerDisplayHandler", + value: function registerDisplayHandler(handler, priority) { + this.table.rowManager.registerDisplayPipelineHandler(handler, priority); + this._handler = handler; + } + }, { + key: "refreshData", + value: function refreshData(renderInPosition, handler) { + if (!handler) { + handler = this._handler; + } + + if (handler) { + this.table.rowManager.refreshActiveData(handler, false, renderInPosition); + } + } /////////////////////////////////// + //////// Footer Management //////// + /////////////////////////////////// + + }, { + key: "footerAppend", + value: function footerAppend(element) { + return this.table.footerManager.append(element); + } + }, { + key: "footerPrepend", + value: function footerPrepend(element) { + return this.table.footerManager.prepend(element); + } + }, { + key: "footerRemove", + value: function footerRemove(element) { + return this.table.footerManager.remove(element); + } /////////////////////////////////// + //////// Popups Management //////// + /////////////////////////////////// + + }, { + key: "popup", + value: function popup(menuEl, menuContainer) { + return new Popup(this.table, menuEl, menuContainer); + } /////////////////////////////////// + //////// Alert Management //////// + /////////////////////////////////// + + }, { + key: "alert", + value: function alert(content, type) { + return this.table.alertManager.alert(content, type); + } + }, { + key: "clearAlert", + value: function clearAlert() { + return this.table.alertManager.clear(); + } + }]); + + return Module; + }(CoreFeature); + + //resize columns to fit data they contain + function fitData (columns) { + 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) { + 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) { + var _this = this; + + var colsWidth = 0, + tableWidth = this.table.rowManager.element.clientWidth, + gap = 0, + lastCol = false; + columns.forEach(function (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(); } }); @@ -8050,7 +8266,8 @@ tabulator.prototype.bindModules = function () { - var orderedMods = [], + var orderedStartMods = [], + orderedEndMods = [], unOrderedMods = []; this.modules = {}; @@ -8063,17 +8280,24 @@ this.modulesCore.push(module); } else { if (mod.moduleInitOrder) { - orderedMods.push(module); + if (mod.moduleInitOrder < 0) { + orderedStartMods.push(module); + } else { + orderedEndMods.push(module); + } } else { unOrderedMods.push(module); } } } - orderedMods.sort(function (a, b) { + orderedStartMods.sort(function (a, b) { + return a.moduleInitOrder > b.moduleInitOrder ? 1 : -1; + }); + orderedEndMods.sort(function (a, b) { return a.moduleInitOrder > b.moduleInitOrder ? 1 : -1; }); - this.modulesRegular = orderedMods.concat(unOrderedMods); + this.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods)); }; } }, { @@ -8094,40 +8318,124 @@ return ModuleBinder; }(); - var Tabulator = /*#__PURE__*/function () { - function Tabulator(element, options) { - var _this = this; - - _classCallCheck(this, Tabulator); - - this.options = {}; - this.columnManager = null; // hold Column Manager + var Alert = /*#__PURE__*/function (_CoreFeature) { + _inherits(Alert, _CoreFeature); - this.rowManager = null; //hold Row Manager - - this.footerManager = null; //holder Footer Manager + var _super = _createSuper(Alert); - this.vdomHoz = null; //holder horizontal virtual dom + function Alert(table) { + var _this; - this.externalEvents = null; //handle external event messaging + _classCallCheck(this, Alert); - this.eventBus = null; //handle internal event messaging + _this = _super.call(this, table); + _this.element = _this._createAlertElement(); + _this.msgElement = _this._createMsgElement(); + _this.type = null; - this.interactionMonitor = false; //track user interaction + _this.element.appendChild(_this.msgElement); - this.browser = ""; //hold current browser type + return _this; + } - this.browserSlow = false; //handle reduced functionality for slower browsers + _createClass(Alert, [{ + key: "_createAlertElement", + value: function _createAlertElement() { + var el = document.createElement("div"); + el.classList.add("tabulator-alert"); + return el; + } + }, { + key: "_createMsgElement", + value: function _createMsgElement() { + var el = document.createElement("div"); + el.classList.add("tabulator-alert-msg"); + el.setAttribute("role", "alert"); + return el; + } + }, { + key: "_typeClass", + value: function _typeClass() { + return "tabulator-alert-state-" + this.type; + } + }, { + key: "alert", + value: function alert(content) { + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "msg"; - this.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance + if (content) { + this.clear(); + this.type = type; - this.rtl = false; //check if the table is in RTL mode + while (this.msgElement.firstChild) { + this.msgElement.removeChild(this.msgElement.firstChild); + } - this.originalElement = null; //hold original table element if it has been replaced + this.msgElement.classList.add(this._typeClass()); - this.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions + if (typeof content === "function") { + content = content(); + } - this.dataLoader = false; //bind component functions + if (content instanceof HTMLElement) { + this.msgElement.appendChild(content); + } else { + this.msgElement.innerHTML = content; + } + + this.table.element.appendChild(this.element); + } + } + }, { + key: "clear", + value: function clear() { + if (this.element.parentNode) { + this.element.parentNode.removeChild(this.element); + } + + this.msgElement.classList.remove(this._typeClass()); + } + }]); + + return Alert; + }(CoreFeature); + + var Tabulator = /*#__PURE__*/function () { + function Tabulator(element, options) { + var _this = this; + + _classCallCheck(this, Tabulator); + + 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 @@ -8176,6 +8484,7 @@ 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); @@ -8399,34 +8708,56 @@ } 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)); + } + }, { + key: "initGuard", + value: function 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 }, { key: "blockRedraw", value: function blockRedraw() { + this.initGuard(); return this.rowManager.blockRedraw(); } //restore table redrawing }, { key: "restoreRedraw", value: function restoreRedraw() { + this.initGuard(); return this.rowManager.restoreRedraw(); } //load data }, { key: "setData", value: function setData(data, params, config) { - if (this.initialized) { - return this.dataLoader.load(data, params, config, false); - } else { - console.warn("setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor."); - } + 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 }, { key: "clearData", value: function clearData() { + this.initGuard(); this.dataLoader.blockActiveLoad(); this.rowManager.clearData(); } //get table data array @@ -8446,11 +8777,8 @@ }, { key: "replaceData", value: function replaceData(data, params, config) { - if (this.initialized) { - return this.dataLoader.load(data, params, config, true, true); - } else { - console.warn("replaceData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + this.initGuard(); + return this.dataLoader.load(data, params, config, true, true); } //update table data }, { @@ -8459,68 +8787,61 @@ var _this2 = this; var responses = 0; + this.initGuard(); + return new Promise(function (resolve, reject) { + _this2.dataLoader.blockActiveLoad(); - if (this.initialized) { - return new Promise(function (resolve, reject) { - _this2.dataLoader.blockActiveLoad(); - - if (typeof data === "string") { - data = JSON.parse(data); - } + if (typeof data === "string") { + data = JSON.parse(data); + } - if (data) { - data.forEach(function (item) { - var row = _this2.rowManager.findRow(item[_this2.options.index]); + if (data) { + data.forEach(function (item) { + var row = _this2.rowManager.findRow(item[_this2.options.index]); - if (row) { - responses++; - row.updateData(item).then(function () { - responses--; + if (row) { + responses++; + row.updateData(item).then(function () { + responses--; - if (!responses) { - resolve(); - } - }); - } - }); - } else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } else { - console.warn("updateData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + if (!responses) { + resolve(); + } + }); + } + }); + } else { + console.warn("Update Error - No data provided"); + reject("Update Error - No data provided"); + } + }); } }, { key: "addData", value: function addData(data, pos, index) { var _this3 = this; - if (this.initialized) { - return new Promise(function (resolve, reject) { - _this3.dataLoader.blockActiveLoad(); + this.initGuard(); + return new Promise(function (resolve, reject) { + _this3.dataLoader.blockActiveLoad(); - if (typeof data === "string") { - data = JSON.parse(data); - } + if (typeof data === "string") { + data = JSON.parse(data); + } - if (data) { - _this3.rowManager.addRows(data, pos, index).then(function (rows) { - var output = []; - rows.forEach(function (row) { - output.push(row.getComponent()); - }); - resolve(output); + if (data) { + _this3.rowManager.addRows(data, pos, index).then(function (rows) { + var output = []; + rows.forEach(function (row) { + output.push(row.getComponent()); }); - } else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } else { - console.warn("addData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + resolve(output); + }); + } else { + console.warn("Update Error - No data provided"); + reject("Update Error - No data provided"); + } + }); } //update table data }, { @@ -8530,49 +8851,45 @@ var rows = [], responses = 0; + this.initGuard(); + return new Promise(function (resolve, reject) { + _this4.dataLoader.blockActiveLoad(); - if (this.initialized) { - return new Promise(function (resolve, reject) { - _this4.dataLoader.blockActiveLoad(); - - if (typeof data === "string") { - data = JSON.parse(data); - } + if (typeof data === "string") { + data = JSON.parse(data); + } - if (data) { - data.forEach(function (item) { - var row = _this4.rowManager.findRow(item[_this4.options.index]); + if (data) { + data.forEach(function (item) { + var row = _this4.rowManager.findRow(item[_this4.options.index]); - responses++; + responses++; - if (row) { - row.updateData(item).then(function () { - responses--; - rows.push(row.getComponent()); + if (row) { + row.updateData(item).then(function () { + responses--; + rows.push(row.getComponent()); - if (!responses) { - resolve(rows); - } - }); - } else { - _this4.rowManager.addRows(item).then(function (newRows) { - responses--; - rows.push(newRows[0].getComponent()); + if (!responses) { + resolve(rows); + } + }); + } else { + _this4.rowManager.addRows(item).then(function (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"); - } - }); - } else { - console.warn("updateOrAddData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + if (!responses) { + resolve(rows); + } + }); + } + }); + } else { + console.warn("Update Error - No data provided"); + reject("Update Error - No data provided"); + } + }); } //get row object }, { @@ -8607,6 +8924,7 @@ var _this5 = this; var foundRows = []; + this.initGuard(); if (!Array.isArray(index)) { index = [index]; @@ -8650,23 +8968,22 @@ }, { key: "addRow", value: function addRow(data, pos, index) { - if (this.initialized) { - if (typeof data === "string") { - data = JSON.parse(data); - } + this.initGuard(); - return this.rowManager.addRows(data, pos, index).then(function (rows) { - return rows[0].getComponent(); - }); - } else { - console.warn("addRow failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); + if (typeof data === "string") { + data = JSON.parse(data); } + + return this.rowManager.addRows(data, pos, index).then(function (rows) { + return rows[0].getComponent(); + }); } //update a row if it exitsts otherwise create it }, { key: "updateOrAddRow", value: function updateOrAddRow(index, data) { var row = this.rowManager.findRow(index); + this.initGuard(); if (typeof data === "string") { data = JSON.parse(data); @@ -8687,6 +9004,7 @@ key: "updateRow", value: function updateRow(index, data) { var row = this.rowManager.findRow(index); + this.initGuard(); if (typeof data === "string") { data = JSON.parse(data); @@ -8718,6 +9036,7 @@ key: "moveRow", value: function moveRow(from, to, after) { var fromRow = this.rowManager.findRow(from); + this.initGuard(); if (fromRow) { fromRow.moveToRow(to, after); @@ -8747,11 +9066,8 @@ }, { key: "setColumns", value: function setColumns(definition) { - if (this.initialized) { - this.columnManager.setColumns(definition); - } else { - console.warn("setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor."); - } + this.initGuard(false, "To set initial columns please use the 'columns' property in the table constructor"); + this.columnManager.setColumns(definition); } }, { key: "getColumns", @@ -8761,10 +9077,10 @@ }, { key: "getColumn", value: function getColumn(field) { - var col = this.columnManager.findColumn(field); + var column = this.columnManager.findColumn(field); - if (col) { - return col.getComponent(); + if (column) { + return column.getComponent(); } else { console.warn("Find Error - No matching column found:", field); return false; @@ -8779,6 +9095,7 @@ key: "showColumn", value: function showColumn(field) { var column = this.columnManager.findColumn(field); + this.initGuard(); if (column) { column.show(); @@ -8791,6 +9108,7 @@ key: "hideColumn", value: function hideColumn(field) { var column = this.columnManager.findColumn(field); + this.initGuard(); if (column) { column.hide(); @@ -8803,6 +9121,7 @@ key: "toggleColumn", value: function toggleColumn(field) { var column = this.columnManager.findColumn(field); + this.initGuard(); if (column) { if (column.visible) { @@ -8819,6 +9138,7 @@ key: "addColumn", value: function addColumn(definition, before, field) { var column = this.columnManager.findColumn(field); + this.initGuard(); return this.columnManager.addColumn(definition, before, column).then(function (column) { return column.getComponent(); }); @@ -8827,6 +9147,7 @@ key: "deleteColumn", value: function deleteColumn(field) { var column = this.columnManager.findColumn(field); + this.initGuard(); if (column) { return column["delete"](); @@ -8839,6 +9160,7 @@ key: "updateColumnDefinition", value: function updateColumnDefinition(field, definition) { var column = this.columnManager.findColumn(field); + this.initGuard(); if (column) { return column.updateDefinition(definition); @@ -8850,8 +9172,9 @@ }, { key: "moveColumn", value: function moveColumn(from, to, after) { - var fromColumn = this.columnManager.findColumn(from); - var toColumn = this.columnManager.findColumn(to); + var fromColumn = this.columnManager.findColumn(from), + toColumn = this.columnManager.findColumn(to); + this.initGuard(); if (fromColumn) { if (toColumn) { @@ -8885,12 +9208,9 @@ }, { key: "redraw", value: function redraw(force) { - if (this.initialized) { - this.columnManager.redraw(force); - this.rowManager.redraw(force); - } else { - console.warn("redraw failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + this.initGuard(); + this.columnManager.redraw(force); + this.rowManager.redraw(force); } }, { key: "setHeight", @@ -8920,6 +9240,19 @@ key = args.shift(); (_this$externalEvents = this.externalEvents).dispatch.apply(_this$externalEvents, arguments); + } //////////////////// Alerts /////////////////// + + }, { + key: "alert", + value: function alert(contents, type) { + this.initGuard(); + this.alertManager.alert(contents, type); + } + }, { + key: "clearAlert", + value: function clearAlert() { + this.initGuard(); + this.alertManager.clear(); } ////////////// Extension Management ////////////// }, { @@ -9126,7 +9459,7 @@ return encoded.join("&"); } - function defaultURLGenerator (url, config, params) { + function urlBuilder (url, config, params) { if (url) { if (params && Object.keys(params).length) { if (!config.method || config.method.toLowerCase() == "get") { @@ -9430,7 +9763,7 @@ Ajax.moduleName = "ajax"; //load defaults Ajax.defaultConfig = defaultConfig; - Ajax.defaultURLGenerator = defaultURLGenerator; + Ajax.defaultURLGenerator = urlBuilder; Ajax.defaultLoaderPromise = defaultLoaderPromise; Ajax.contentTypeFormatters = defaultContentTypeFormatters; @@ -10184,7 +10517,7 @@ if (this.botInitialized) { this.botInitialized = false; - this.table.footerManager.remove(this.botElement); + this.footerRemove(this.botElement); changed = true; } @@ -10204,7 +10537,7 @@ key: "initializeBottomRow", value: function initializeBottomRow() { if (!this.botInitialized) { - this.table.footerManager.prepend(this.botElement); + this.footerPrepend(this.botElement); this.botInitialized = true; } } @@ -11761,6 +12094,10 @@ preventScroll: true }); input.style.height = "100%"; + + if (editorParams.selectContents) { + input.select(); + } }); function onChange(e) { @@ -11838,6 +12175,10 @@ input.scrollHeight; input.style.height = input.scrollHeight + "px"; cell.getRow().normalizeHeight(); + + if (editorParams.selectContents) { + input.select(); + } }); function onChange(e) { @@ -11954,6 +12295,10 @@ input.style.height = "100%"; //submit new value on blur input.addEventListener("blur", blurFunc); + + if (editorParams.selectContents) { + input.select(); + } }); function onChange() { @@ -12087,998 +12432,1088 @@ return input; } - function select (cell, onRendered, success, cancel, editorParams) { - var _this = this; + var Edit = /*#__PURE__*/function () { + function Edit(editor, cell, onRendered, success, cancel, editorParams) { + _classCallCheck(this, Edit); - var self = this, - cellEl = cell.getElement(), - initialValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? Array.isArray(initialValue) ? initialValue : [initialValue] : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : [], - input = document.createElement("input"), - listEl = document.createElement("div"), - multiselect = editorParams.multiselect, - dataItems = [], - currentItem = {}, - displayItems = [], - currentItems = [], - blurable = true, - blockListShow = false, - searchWord = "", - searchWordTimeout = null; - - if (Array.isArray(editorParams) || !Array.isArray(editorParams) && _typeof(editorParams) === "object" && !editorParams.values) { - console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"); - editorParams = { - values: 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._getSelf; + this.filterTimeout = null; + this.filtered = false; + this.typing = false; + this.values = []; + this.popup = null; + this.listIteration = 0; + this.blurable = true; + this.actions = { + success: success, + cancel: cancel }; - } - - function getUniqueColumnValues(field) { - var output = {}, - data = self.table.getData(), - column; - - if (field) { - column = self.table.columnManager.getColumnByField(field); - } else { - column = cell.getColumn()._getSelf(); - } - if (column) { - data.forEach(function (row) { - var val = column.getFieldValue(row); + this._deprecationCheck(); - if (val !== null && typeof val !== "undefined" && val !== "") { - output[val] = true; - } - }); - } else { - console.warn("unable to find matching column to create select lookup list:", field); - } + this._initializeValue(); - return Object.keys(output); + onRendered(this._onRendered.bind(this)); } - function parseItems(inputValues, curentValues) { - var dataList = []; - var displayList = []; + _createClass(Edit, [{ + key: "_deprecationCheck", + value: function _deprecationCheck() { + if (this.params.listItemFormatter) { + console.warn("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"); + } - function processComplexListItem(item) { - var item = { - label: item.label, - value: item.value, - itemParams: item.itemParams, - elementAttributes: item.elementAttributes, - element: false - }; // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){ - // setCurrentItem(item); - // } + if (this.params.sortValuesList) { + console.warn("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"); + } - if (curentValues.indexOf(item.value) > -1) { - setItem(item); + if (this.params.searchFunc) { + console.warn("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"); } - dataList.push(item); - displayList.push(item); - return item; + if (this.params.searchingPlaceholder) { + console.warn("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options"); + } } + }, { + key: "_initializeValue", + value: function _initializeValue() { + var initialValue = this.cell.getValue(); - if (typeof inputValues == "function") { - inputValues = inputValues(cell); - } + if (typeof initialValue === "undefined" && typeof this.params.defaultValue !== "undefined") { + initialValue = this.params.defaultValue; + } - if (Array.isArray(inputValues)) { - inputValues.forEach(function (value) { - var item; + this.initialValues = this.params.multiselect ? initialValue : [initialValue]; - if (_typeof(value) === "object") { - if (value.options) { - item = { - label: value.label, - group: true, - itemParams: value.itemParams, - elementAttributes: value.elementAttributes, - element: false - }; - displayList.push(item); - value.options.forEach(function (item) { - processComplexListItem(item); - }); - } else { - processComplexListItem(value); - } - } else { - item = { - label: value, - value: value, - element: false - }; // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){ - // setCurrentItem(item); - // } + if (this.isFilter) { + this.input.value = this.initialValues.join(","); + this.headerFilterInitialListGen(); + } + } + }, { + key: "_onRendered", + value: function _onRendered() { + var cellEl = this.cell.getElement(); - if (curentValues.indexOf(item.value) > -1) { - setItem(item); - } + function clickStop(e) { + e.stopPropagation(); + } - dataList.push(item); - displayList.push(item); - } + this.input.style.height = "100%"; + this.input.focus({ + preventScroll: true }); - } else { - for (var key in inputValues) { - var item = { - label: inputValues[key], - value: key, - element: false - }; // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){ - // setCurrentItem(item); - // } + cellEl.addEventListener("click", clickStop); + setTimeout(function () { + cellEl.removeEventListener("click", clickStop); + }, 1000); + } + }, { + key: "_createListElement", + value: function _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; + } + }, { + key: "_setListWidth", + value: function _setListWidth() { + var element = this.isFilter ? this.input : this.cell.getElement(); + this.listEl.style.minWidth = element.offsetWidth + "px"; - if (curentValues.indexOf(item.value) > -1) { - setItem(item); + 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; } - - dataList.push(item); - displayList.push(item); } } + }, { + key: "_createInputElement", + value: function _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 (editorParams.sortValuesList) { - dataList.sort(function (a, b) { - return a.label < b.label ? -1 : a.label > b.label ? 1 : 0; - }); - displayList.sort(function (a, b) { - return a.label < b.label ? -1 : a.label > b.label ? 1 : 0; - }); + if (!this.params.autocomplete) { + input.style.cursor = "default"; + input.style.caretColor = "transparent"; // input.readOnly = (this.edit.currentCell != false); + } - if (editorParams.sortValuesList !== "asc") { - dataList.reverse(); - displayList.reverse(); + if (attribs && _typeof(attribs) == "object") { + for (var 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]); + } + } } - } - dataItems = dataList; - displayItems = displayList; - fillList(); - } + if (this.params.mask) { + maskInput(input, this.params); + } - function fillList() { - while (listEl.firstChild) { - listEl.removeChild(listEl.firstChild); + this._bindInputEvents(input); + + return input; } + }, { + key: "_initializeParams", + value: function _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(function (key) { + return valueKeys.includes(key); + }).length; - displayItems.forEach(function (item) { - var el = item.element; + 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 (!el) { - el = document.createElement("div"); - item.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label; + 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 (item.group) { - el.classList.add("tabulator-edit-select-list-group"); - el.tabIndex = 0; - el.innerHTML = item.label === "" ? " " : item.label; - } else { - el.classList.add("tabulator-edit-select-list-item"); - el.tabIndex = 0; - el.innerHTML = item.label === "" ? " " : item.label; - el.addEventListener("click", function () { - blockListShow = true; - setTimeout(function () { - blockListShow = false; - }, 10); // setCurrentItem(item); - // chooseItem(); - - if (multiselect) { - toggleItem(item); - input.focus(); - } else { - chooseItem(item); - } - }); // if(item === currentItem){ - // el.classList.add("active"); - // } + if (params.filterFunc) { + params.filterFunc = false; + console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled"); + } - if (currentItems.indexOf(item) > -1) { - el.classList.add("active"); - } + if (params.filterRemote) { + params.filterRemote = false; + console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled"); } - if (item.elementAttributes && _typeof(item.elementAttributes) == "object") { - for (var key in item.elementAttributes) { - if (key.charAt(0) == "+") { - key = key.slice(1); - el.setAttribute(key, input.getAttribute(key) + item.elementAttributes["+" + key]); - } else { - el.setAttribute(key, item.elementAttributes[key]); - } - } + if (params.mask) { + params.mask = false; + console.warn("list editor config error - mask option is only available when autocomplete is enabled"); } - el.addEventListener("mousedown", function () { - blurable = false; - setTimeout(function () { - blurable = true; - }, 10); - }); - item.element = el; - } + if (params.allowEmpty) { + params.allowEmpty = false; + console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled"); + } - listEl.appendChild(el); - }); - } - - function setCurrentItem(item, active) { - if (!multiselect && currentItem && currentItem.element) { - currentItem.element.classList.remove("active"); - } + if (params.listOnEmpty) { + params.listOnEmpty = false; + console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"); + } + } - if (currentItem && currentItem.element) { - currentItem.element.classList.remove("focused"); - } + if (params.filterRemote && !(typeof params.valuesLookup === "function" || _typeof(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"); + } - currentItem = item; + return params; + } ////////////////////////////////////// + ////////// Event Handling //////////// + ////////////////////////////////////// - if (item.element) { - item.element.classList.add("focused"); + }, { + key: "_bindInputEvents", + value: function _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 (active) { - item.element.classList.add("active"); + if (this.params.autocomplete) { + input.addEventListener("keyup", this._inputKeyUp.bind(this)); } } - - if (item && item.element && item.element.scrollIntoView) { - item.element.scrollIntoView({ - behavior: 'smooth', - block: 'nearest', - inline: 'start' - }); + }, { + key: "_inputFocus", + value: function _inputFocus(e) { + this.rebuildOptionsList(); } - } // function chooseItem(){ - // hideList(); - // if(initialValue !== currentItem.value){ - // initialValue = currentItem.value; - // success(currentItem.value); - // }else{ - // cancel(); - // } - // } - - - function setItem(item) { - var index = currentItems.indexOf(item); + }, { + key: "_filter", + value: function _filter() { + var _this = this; - if (index == -1) { - currentItems.push(item); - setCurrentItem(item, true); + if (this.params.filterRemote) { + clearTimeout(this.filterTimeout); + this.filterTimeout = setTimeout(function () { + _this.rebuildOptionsList(); + }, this.params.filterDelay); + } else { + this._filterList(); + } } - - fillInput(); - } - - function unsetItem(index) { - var item = currentItems[index]; - - if (index > -1) { - currentItems.splice(index, 1); - - if (item.element) { - item.element.classList.remove("active"); + }, { + key: "_inputClick", + value: function _inputClick(e) { + e.stopPropagation(); + } + }, { + key: "_inputBlur", + value: function _inputBlur(e) { + if (this.blurable && this.popup) { + this.popup.hide(); } } - } - - function toggleItem(item) { - if (!item) { - item = currentItem; + }, { + key: "_inputSearch", + value: function _inputSearch() { + this._clearChoices(); } + }, { + key: "_inputKeyDown", + value: function _inputKeyDown(e) { + switch (e.keyCode) { + case 38: + //up arrow + this._keyUp(e); - var index = currentItems.indexOf(item); - - if (index > -1) { - unsetItem(index); - } else { - if (multiselect !== true && currentItems.length >= multiselect) { - unsetItem(0); - } + break; - setItem(item); - } + case 40: + //down arrow + this._keyDown(e); - fillInput(); - } + break; - function chooseItem(item) { - hideList(); + case 37: //left arrow - if (!item) { - item = currentItem; - } + case 39: + //right arrow + this._keySide(e); - if (item) { - input.value = item.label; - success(item.value); - } + break; - initialDisplayValue = [item.value]; - } + case 13: + //enter + this._keyEnter(); - function chooseItems(silent) { - if (!silent) { - hideList(); - } + break; - var output = []; - currentItems.forEach(function (item) { - output.push(item.value); - }); - initialDisplayValue = output; - success(output); - } + case 27: + //escape + this._keyEsc(); - function fillInput() { - var output = []; - currentItems.forEach(function (item) { - output.push(item.label); - }); - input.value = output.join(", "); + break; - if (self.currentCell === false) { - chooseItems(true); - } - } + case 36: //home - function unsetItems() { - var len = currentItems.length; + case 35: + //end + this._keyHomeEnd(e); - for (var i = 0; i < len; i++) { - unsetItem(0); - } - } + break; - function cancelItem() { - hideList(); - cancel(); - } + case 9: + //tab + break; - function showList() { - currentItems = []; + default: + this._keySelectLetter(e); - if (!listEl.parentNode) { - if (editorParams.values === true) { - parseItems(getUniqueColumnValues(), initialDisplayValue); - } else if (typeof editorParams.values === "string") { - parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue); - } else { - parseItems(editorParams.values || [], initialDisplayValue); } - - var offset = Helpers.elOffset(cellEl); - listEl.style.minWidth = cellEl.offsetWidth + "px"; - listEl.style.top = offset.top + cellEl.offsetHeight + "px"; - listEl.style.left = offset.left + "px"; - listEl.addEventListener("mousedown", function (e) { - blurable = false; - setTimeout(function () { - blurable = true; - }, 10); - }); - document.body.appendChild(listEl); } - } + }, { + key: "_inputKeyUp", + value: function _inputKeyUp(e) { + switch (e.keyCode) { + case 38: //up arrow - function hideList() { - if (listEl.parentNode) { - listEl.parentNode.removeChild(listEl); - } + case 37: //left arrow - removeScrollListener(); - } + case 39: //up arrow - function removeScrollListener() { - self.table.rowManager.element.removeEventListener("scroll", cancelItem); - } + case 40: //right arrow - function scrollTovalue(_char) { - clearTimeout(searchWordTimeout); - var character = String.fromCharCode(event.keyCode).toLowerCase(); - searchWord += character.toLowerCase(); - var match = dataItems.find(function (item) { - return typeof item.label !== "undefined" && item.label.toLowerCase().startsWith(searchWord); - }); + case 13: //enter - if (match) { - setCurrentItem(match, !multiselect); - } + case 27: + //escape + break; - searchWordTimeout = setTimeout(function () { - searchWord = ""; - }, 800); - } //style input + default: + this._keyAutoCompLetter(e); + } + } + }, { + key: "_preventBlur", + value: function _preventBlur() { + this.blurable = false; + setTimeout(function () { + this.blurable = true; + }, 10); + } ////////////////////////////////////// + //////// Keyboard Navigation ///////// + ////////////////////////////////////// - input.setAttribute("type", "text"); - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - input.style.cursor = "default"; - input.readOnly = this.currentCell != false; + }, { + key: "_keyUp", + value: function _keyUp(e) { + var index = this.displayItems.indexOf(this.focusedItem); - if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") { - for (var 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]); + 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]); + } } } - } + }, { + key: "_keyDown", + value: function _keyDown(e) { + var index = this.displayItems.indexOf(this.focusedItem); - input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : ""; // if(editorParams.values === true){ - // parseItems(getUniqueColumnValues(), initialValue); - // }else if(typeof editorParams.values === "string"){ - // parseItems(getUniqueColumnValues(editorParams.values), initialValue); - // }else{ - // parseItems(editorParams.values || [], initialValue); - // } + if (this.params.verticalNavigation == "editor" || this.params.verticalNavigation == "hybrid" && index < this.displayItems.length - 1) { + e.stopImmediatePropagation(); + e.stopPropagation(); + e.preventDefault(); - input.addEventListener("search", function (e) { - if (!input.value) { - unsetItems(); - chooseItems(); + if (index < this.displayItems.length - 1) { + if (index == -1) { + this._focusItem(this.displayItems[0]); + } else { + this._focusItem(this.displayItems[index + 1]); + } + } + } } - }); //allow key based navigation + }, { + key: "_keySide", + value: function _keySide(e) { + e.stopImmediatePropagation(); + e.stopPropagation(); + e.preventDefault(); + } + }, { + key: "_keyEnter", + value: function _keyEnter(e) { + if (this.focusedItem) { + this._chooseItem(this.focusedItem); + } else { + this._cancel(); + } + } + }, { + key: "_keyEsc", + value: function _keyEsc(e) { + this._cancel(); + } + }, { + key: "_keyHomeEnd", + value: function _keyHomeEnd(e) { + if (this.params.autocomplete) { + //prevent table navigation while using input element + e.stopImmediatePropagation(); + } + } + }, { + key: "_keySelectLetter", + value: function _keySelectLetter(e) { + if (!this.params.autocomplete) { + // if(this.edit.currentCell === false){ + e.preventDefault(); // } - input.addEventListener("keydown", function (e) { - var index; + if (e.keyCode >= 38 && e.keyCode <= 90) { + this._scrollToValue(e.keyCode); + } + } + } + }, { + key: "_keyAutoCompLetter", + value: function _keyAutoCompLetter(e) { + this._filter(); - switch (e.keyCode) { - case 38: - //up arrow - index = dataItems.indexOf(currentItem); + this.typing = true; + } + }, { + key: "_scrollToValue", + value: function _scrollToValue(_char) { + var _this2 = this; - if (vertNav == "editor" || vertNav == "hybrid" && index) { - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); + clearTimeout(this.filterTimeout); + var character = String.fromCharCode(_char).toLowerCase(); + this.filterTerm += character.toLowerCase(); + var match = this.displayItems.find(function (item) { + return typeof item.label !== "undefined" && item.label.toLowerCase().startsWith(_this2.filterTerm); + }); - if (index > 0) { - setCurrentItem(dataItems[index - 1], !multiselect); - } - } + if (match) { + this._focusItem(match); + } - break; + this.filterTimeout = setTimeout(function () { + _this2.filterTerm = ""; + }, 800); + } + }, { + key: "_focusItem", + value: function _focusItem(item) { + if (this.focusedItem && this.focusedItem.element) { + this.focusedItem.element.classList.remove("focused"); + } - case 40: - //down arrow - index = dataItems.indexOf(currentItem); + this.focusedItem = item; - if (vertNav == "editor" || vertNav == "hybrid" && index < dataItems.length - 1) { - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); + if (item && item.element) { + item.element.classList.add("focused"); + item.element.scrollIntoView({ + behavior: 'smooth', + block: 'nearest', + inline: 'start' + }); + } + } ////////////////////////////////////// + /////// Data List Generation ///////// + ////////////////////////////////////// - if (index < dataItems.length - 1) { - if (index == -1) { - setCurrentItem(dataItems[0], !multiselect); - } else { - setCurrentItem(dataItems[index + 1], !multiselect); - } - } + }, { + key: "headerFilterInitialListGen", + value: function headerFilterInitialListGen() { + this._generateOptions(true); + } + }, { + key: "rebuildOptionsList", + value: function rebuildOptionsList() { + this._generateOptions().then(this._sortOptions.bind(this)).then(this._buildList.bind(this)).then(this._showList.bind(this))["catch"](function (e) { + if (!Number.isInteger(e)) { + console.error("List generation error", e); } + }); + } + }, { + key: "_filterList", + value: function _filterList() { + this._buildList(this._filterOptions()); - break; + this._showList(); + } + }, { + key: "_generateOptions", + value: function _generateOptions(silent) { + var _this3 = this; - case 37: //left arrow + var values = []; + var itteration = ++this.listIteration; + this.filtered = false; - case 39: - //right arrow - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - break; + 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(cell, this.input.value); + } else if (this.params.valuesLookup) { + values = this._uniqueColumnValues(this.params.valuesLookupField); + } + } - case 13: - //enter - // chooseItem(); - if (multiselect) { - toggleItem(); - } else { - chooseItem(); + if (values instanceof Promise) { + if (!silent) { + this._addPlaceholder(this.params.placeholderLoading); } - break; + return values.then().then(function (responseValues) { + if (_this3.listIteration === itteration) { + return _this3._parseList(responseValues); + } else { + return Promise.reject(itteration); + } + }); + } else { + return Promise.resolve(this._parseList(values)); + } + } + }, { + key: "_addPlaceholder", + value: function _addPlaceholder(contents) { + var placeholder = document.createElement("div"); - case 27: - //escape - cancelItem(); - break; + if (typeof contents === "function") { + contents = contents(cell.getComponent(), this.listEl); + } - case 9: - //tab - break; + if (contents) { + this._clearList(); - default: - if (self.currentCell === false) { - e.preventDefault(); + if (contents instanceof HTMLElement) { + placeholder = contents; + } else { + placeholder.classList.add("tabulator-edit-list-placeholder"); + placeholder.innerHTML = contents; } - if (e.keyCode >= 38 && e.keyCode <= 90) { - scrollTovalue(e.keyCode); - } + this.listEl.appendChild(placeholder); - } - }); - input.addEventListener("blur", function (e) { - if (blurable) { - if (multiselect) { - chooseItems(); - } else { - cancelItem(); + this._showList(); } } - }); - input.addEventListener("focus", function (e) { - if (!blockListShow) { - showList(); + }, { + key: "_ajaxRequest", + value: function _ajaxRequest(url, term) { + var params = this.params.filterRemote ? { + term: term + } : {}; + url = urlBuilder(url, {}, params); + return fetch(url).then(function (response) { + if (response.ok) { + return response.json()["catch"](function (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"](function (error) { + console.error("List Ajax Load Error - Connection Error: ", error); + return Promise.reject(error); + }); } - }); //style list element - - listEl = document.createElement("div"); - listEl.classList.add("tabulator-edit-select-list"); - onRendered(function () { - input.style.height = "100%"; - input.focus({ - preventScroll: true - }); - }); - setTimeout(function () { - _this.table.rowManager.element.addEventListener("scroll", cancelItem); - }, 10); - return input; - } - - function autocomplete (cell, onRendered, success, cancel, editorParams) { - var _this = this; + }, { + key: "_uniqueColumnValues", + value: function _uniqueColumnValues(field) { + var output = {}, + data = this.table.getData(this.params.valuesLookup), + column; - var self = this, - cellEl = cell.getElement(), - initialValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "", - input = document.createElement("input"), - listEl = document.createElement("div"), - displayItems = [], - currentItem = false, - blurable = true, - uniqueColumnValues = false; //style input + if (field) { + column = this.table.columnManager.getColumnByField(field); + } else { + column = this.cell.getColumn()._getSelf(); + } - input.setAttribute("type", "search"); - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; + if (column) { + data.forEach(function (row) { + var val = column.getFieldValue(row); - if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") { - for (var key in editorParams.elementAttributes) { - if (key.charAt(0) == "+") { - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); + if (val !== null && typeof val !== "undefined" && val !== "") { + output[val] = true; + } + }); } else { - input.setAttribute(key, editorParams.elementAttributes[key]); + console.warn("unable to find matching column to create select lookup list:", field); + output = []; } + + return Object.keys(output); } - } //style list element + }, { + key: "_parseList", + value: function _parseList(inputValues) { + var _this4 = this; + var data = []; - listEl.classList.add("tabulator-edit-select-list"); - listEl.addEventListener("mousedown", function (e) { - blurable = false; - setTimeout(function () { - blurable = true; - }, 10); - }); + if (!Array.isArray(inputValues)) { + inputValues = Object.entries(inputValues).map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + key = _ref2[0], + value = _ref2[1]; - function genUniqueColumnValues() { - if (editorParams.values === true) { - uniqueColumnValues = getUniqueColumnValues(); - } else if (typeof editorParams.values === "string") { - uniqueColumnValues = getUniqueColumnValues(editorParams.values); - } - } + return { + label: value, + value: key + }; + }); + } - function getUniqueColumnValues(field) { - var output = {}, - data = self.table.getData(), - column; + inputValues.forEach(function (value) { + if (_typeof(value) !== "object") { + value = { + label: value, + value: value + }; + } - if (field) { - column = self.table.columnManager.getColumnByField(field); - } else { - column = cell.getColumn()._getSelf(); + _this4._parseListItem(value, data, 0); + }); + this.data = data; + return data; } + }, { + key: "_parseListItem", + value: function _parseListItem(option, data, level) { + var item = {}; - if (column) { - data.forEach(function (row) { - var val = column.getFieldValue(row); + 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 (val !== null && typeof val !== "undefined" && val !== "") { - output[val] = true; + if (this.initialValues && this.initialValues.indexOf(option.value) > -1) { + this._chooseItem(item, true); } + } + + data.push(item); + } + }, { + key: "_parseListGroup", + value: function _parseListGroup(option, level) { + var _this5 = this; + + 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(function (child) { + _this5._parseListItem(child, item.options, level); }); + return item; + } + }, { + key: "_sortOptions", + value: function _sortOptions(options) { + var sorter; - if (editorParams.sortValuesList) { - if (editorParams.sortValuesList == "asc") { - output = Object.keys(output).sort(); - } else { - output = Object.keys(output).sort().reverse(); - } - } else { - output = Object.keys(output); + if (this.params.sort) { + sorter = typeof this.params.sort === "function" ? this.params.sort : this._defaultSortFunction.bind(this); + + this._sortGroup(sorter, options); } - } else { - console.warn("unable to find matching column to create autocomplete lookup list:", field); + + return options; + } + }, { + key: "_sortGroup", + value: function _sortGroup(sorter, options) { + var _this6 = this; + + options.sort(function (a, b) { + return sorter(a.label, b.label, a.value, b.value, a.original, b.original); + }); + options.forEach(function (option) { + if (option.group) { + _this6._sortGroup(sorter, option.options); + } + }); } + }, { + key: "_defaultSortFunction", + value: function _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") { + var _ref3 = [bs, as]; + as = _ref3[0]; + bs = _ref3[1]; + } //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; - return output; - } + 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; + } + } - function filterList(term, intialLoad) { - var matches = [], - values, - items; - //lookup base values list + return a.length > b.length; + } - if (uniqueColumnValues) { - values = uniqueColumnValues; - } else { - values = editorParams.values || []; + return emptyAlign; } + }, { + key: "_filterOptions", + value: function _filterOptions() { + var _this7 = this; - if (editorParams.searchFunc) { - matches = editorParams.searchFunc(term, values); + var filterFunc = this.params.filterFunc || this._defaultFilterFunc; + var term = this.input.value; - if (matches instanceof Promise) { - addNotice(typeof editorParams.searchingPlaceholder !== "undefined" ? editorParams.searchingPlaceholder : "Searching..."); - matches.then(function (result) { - fillListIfNotEmpty(parseItems(result), intialLoad); - })["catch"](function (err) { - console.err("error in autocomplete search promise:", err); + if (term) { + this.filtered = true; + this.data.forEach(function (item) { + _this7._filterItem(filterFunc, term, item); }); } else { - fillListIfNotEmpty(parseItems(matches), intialLoad); + this.filtered = false; } - } else { - items = parseItems(values); - if (term === "") { - if (editorParams.showListOnEmpty) { - matches = items; - } + return this.data; + } + }, { + key: "_filterItem", + value: function _filterItem(func, term, item) { + var _this8 = this; + + var matches = false; + + if (!item.group) { + item.visible = func(term, item.label, item.value, item.original); } else { - items.forEach(function (item) { - if (item.value !== null || typeof item.value !== "undefined") { - if (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) { - matches.push(item); - } + item.options.forEach(function (option) { + if (_this8._filterItem(func, term, option)) { + matches = true; } }); + item.visible = matches; } - fillListIfNotEmpty(matches, intialLoad); + return item.visible; } - } + }, { + key: "_defaultFilterFunc", + value: function _defaultFilterFunc(term, label, value, item) { + var term = String(term).toLowerCase(); - function addNotice(notice) { - var searchEl = document.createElement("div"); - clearList(); + if (label !== null || typeof label !== "undefined") { + if (String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase(term).indexOf() > -1) { + return true; + } + } - if (notice !== false) { - searchEl.classList.add("tabulator-edit-select-list-notice"); - searchEl.tabIndex = 0; + return false; + } ////////////////////////////////////// + /////////// Display List ///////////// + ////////////////////////////////////// - if (notice instanceof Node) { - searchEl.appendChild(notice); - } else { - searchEl.innerHTML = notice; + }, { + key: "_clearList", + value: function _clearList() { + while (this.listEl.firstChild) { + this.listEl.removeChild(this.listEl.firstChild); } - listEl.appendChild(searchEl); + this.displayItems = []; } - } - - function parseItems(inputValues) { - var itemList = []; - - if (Array.isArray(inputValues)) { - inputValues.forEach(function (value) { - var item = {}; + }, { + key: "_buildList", + value: function _buildList(data) { + var _this9 = this; - if (_typeof(value) === "object") { - item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label; - item.value = value.value; - } else { - item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value; - item.value = value; - } + this._clearList(); - itemList.push(item); + data.forEach(function (option) { + _this9._buildItem(option); }); - } else { - for (var key in inputValues) { - var item = { - title: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key], - value: key - }; - itemList.push(item); + + if (!this.displayItems.length) { + this._addPlaceholder(this.params.placeholderEmpty); } } + }, { + key: "_buildItem", + value: function _buildItem(item) { + var _this10 = this; - return itemList; - } + var el = item.element, + contents; - function clearList() { - while (listEl.firstChild) { - listEl.removeChild(listEl.firstChild); - } - } + 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; - function fillListIfNotEmpty(items, intialLoad) { - if (items.length) { - fillList(items, intialLoad); - } else { - if (editorParams.emptyPlaceholder) { - addNotice(editorParams.emptyPlaceholder); - } - } - } + if (contents instanceof HTMLElement) { + el.appendChild(contents); + } else { + el.innerHTML = contents; + } - function fillList(items, intialLoad) { - var current = false; - clearList(); - displayItems = items; - displayItems.forEach(function (item) { - var el = item.element; + if (item.group) { + el.classList.add("tabulator-edit-list-group"); + } else { + el.classList.add("tabulator-edit-list-item"); + } - if (!el) { - el = document.createElement("div"); - el.classList.add("tabulator-edit-select-list-item"); - el.tabIndex = 0; - el.innerHTML = item.title; - el.addEventListener("click", function (e) { - setCurrentItem(item); - chooseItem(); - }); - el.addEventListener("mousedown", function (e) { - blurable = false; - setTimeout(function () { - blurable = true; - }, 10); - }); - item.element = el; + el.classList.add("tabulator-edit-list-group-level-" + item.level); - if (intialLoad && item.value == initialValue) { - input.value = item.title; - item.element.classList.add("active"); - current = true; + if (item.elementAttributes && _typeof(item.elementAttributes) == "object") { + for (var 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; } - if (item === currentItem) { - item.element.classList.add("active"); - current = true; + this._styleItem(item); + + this.listEl.appendChild(el); + + if (item.group) { + item.options.forEach(function (option) { + _this10._buildItem(option); + }); + } else { + this.displayItems.push(item); } } + } + }, { + key: "_showList", + value: function _showList() { + var startVis = this.popup && this.popup.isVisible(); - listEl.appendChild(el); - }); + if (this.input.parentNode) { + if (this.params.autocomplete && this.input.value === "" && !this.params.listOnEmpty) { + if (this.popup) { + this.popup.hide(true); + return; + } + } - if (!current) { - setCurrentItem(false); - } - } + this._setListWidth(); - function chooseItem() { - hideList(); + if (!this.popup) { + this.popup = this.edit.popup(this.listEl); + } - if (currentItem) { - if (initialValue !== currentItem.value) { - initialValue = currentItem.value; - input.value = currentItem.title; - success(currentItem.value); - } else { - cancel(); + this.popup.show(this.cell.getElement(), "bottom"); + + if (!startVis) { + this.popup.hideOnBlur(this._resolveValue.bind(this, true)); + } } - } else { - if (editorParams.freetext) { - initialValue = input.value; - success(input.value); - } else { - if (editorParams.allowEmpty && input.value === "") { - initialValue = input.value; - success(input.value); + } + }, { + key: "_styleItem", + value: function _styleItem(item) { + if (item && item.element) { + if (item.selected) { + item.element.classList.add("active"); } else { - cancel(); + item.element.classList.remove("active"); } } - } - } + } ////////////////////////////////////// + ///////// User Interaction /////////// + ////////////////////////////////////// - function showList() { - if (!listEl.parentNode) { - while (listEl.firstChild) { - listEl.removeChild(listEl.firstChild); - } + }, { + key: "_itemClick", + value: function _itemClick(item, e) { + e.stopPropagation(); - var offset = Helpers.elOffset(cellEl); - listEl.style.minWidth = cellEl.offsetWidth + "px"; - listEl.style.top = offset.top + cellEl.offsetHeight + "px"; - listEl.style.left = offset.left + "px"; - document.body.appendChild(listEl); + this._chooseItem(item); } - } + }, { + key: "_groupClick", + value: function _groupClick(item, e) { + e.stopPropagation(); + } ////////////////////////////////////// + ////// Current Item Management /////// + ////////////////////////////////////// - function setCurrentItem(item, showInputValue) { - if (currentItem && currentItem.element) { - currentItem.element.classList.remove("active"); + }, { + key: "_cancel", + value: function _cancel() { + this.popup.hide(true); + this.actions.cancel(); } + }, { + key: "_clearChoices", + value: function _clearChoices() { + var _this11 = this; - currentItem = item; - - if (item && item.element) { - item.element.classList.add("active"); - } + this.typing = true; + this.currentItems.forEach(function (item) { + item.selected = false; - if (item && item.element && item.element.scrollIntoView) { - item.element.scrollIntoView({ - behavior: 'smooth', - block: 'nearest', - inline: 'start' + _this11._styleItem(item); }); + this.currentItems = []; + this.focusedItem = null; } - } - - function hideList() { - if (listEl.parentNode) { - listEl.parentNode.removeChild(listEl); - } + }, { + key: "_chooseItem", + value: function _chooseItem(item, silent) { + var index; + this.typing = false; - removeScrollListener(); - } + if (this.params.multiselect) { + index = this.currentItems.indexOf(item); - function cancelItem() { - hideList(); - cancel(); - } + if (index > -1) { + this.currentItems.splice(index, 1); + item.selected = false; + } else { + this.currentItems.push(item); + item.selected = true; + } - function removeScrollListener() { - self.table.rowManager.element.removeEventListener("scroll", cancelItem); - } //allow key based navigation + this.input.value = this.currentItems.map(function (item) { + return item.label; + }).join(","); + this._styleItem(item); + } else { + this.currentItems = [item]; + item.selected = true; + this.input.value = item.label; - input.addEventListener("keydown", function (e) { - var index; + this._styleItem(item); - switch (e.keyCode) { - case 38: - //up arrow - index = displayItems.indexOf(currentItem); + if (!silent) { + this._resolveValue(); + } + } - if (vertNav == "editor" || vertNav == "hybrid" && index) { - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); + this._focusItem(item); + } + }, { + key: "_resolveValue", + value: function _resolveValue(blur) { + var output, initialValue; + this.popup.hide(true); - if (index > 0) { - setCurrentItem(displayItems[index - 1]); + if (this.params.multiselect) { + output = this.currentItems.map(function (item) { + return 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 { - setCurrentItem(false); + this.actions.cancel(); + return; } - } - - break; - - case 40: - //down arrow - index = displayItems.indexOf(currentItem); - - if (vertNav == "editor" || vertNav == "hybrid" && index < displayItems.length - 1) { - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); + } else { + if (this.currentItems[0]) { + output = this.currentItems[0].value; + } else { + initialValue = this.initialValues[0]; - if (index < displayItems.length - 1) { - if (index == -1) { - setCurrentItem(displayItems[0]); + if (initialValue === null || typeof initialValue === "undefined" || initialValue === "") { + output = initialValue; } else { - setCurrentItem(displayItems[index + 1]); + output = this.params.emptyValue; } } } + } - break; - - case 37: //left arrow - - case 39: - //right arrow - e.stopImmediatePropagation(); - e.stopPropagation(); // e.preventDefault(); - - break; - - case 13: - //enter - chooseItem(); - break; - - case 27: - //escape - cancelItem(); - break; + if (output === "") { + output = this.params.emptyValue; + } - case 36: //home + this.actions.success(output); - case 35: - //end - //prevent table navigation while using input element - e.stopImmediatePropagation(); - break; + if (this.isFilter) { + this.initialValues = output && !Array.isArray[output] ? [output] : output; + } } - }); - input.addEventListener("keyup", function (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; + return Edit; + }(); - default: - filterList(input.value); - } - }); - input.addEventListener("search", function (e) { - filterList(input.value); - }); - input.addEventListener("blur", function (e) { - if (blurable) { - chooseItem(); - } - }); - input.addEventListener("focus", function (e) { - var value = initialDisplayValue; - genUniqueColumnValues(); - showList(); - input.value = value; - filterList(value, true); - }); - onRendered(function () { - input.style.height = "100%"; - input.focus({ - preventScroll: true - }); - }); + function select (cell, onRendered, success, cancel, editorParams) { + console.warn("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; + } - if (editorParams.mask) { - maskInput(input, editorParams); - } + function list (cell, onRendered, success, cancel, editorParams) { + var list = new Edit(this, cell, onRendered, success, cancel, editorParams); + return list.input; + } - setTimeout(function () { - _this.table.rowManager.element.addEventListener("scroll", cancelItem); - }, 10); - genUniqueColumnValues(); - input.value = initialDisplayValue; - filterList(initialDisplayValue, true); - return input; + function autocomplete (cell, onRendered, success, cancel, editorParams) { + console.warn("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 @@ -13338,7 +13773,9 @@ input = document.createElement("input"), tristate = editorParams.tristate, indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue, - indetermState = false; + 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"; @@ -13370,12 +13807,22 @@ }); } - input.checked = value === true || value === "true" || value === "True" || value === 1; + input.checked = trueValueSet ? value === editorParams.trueValue : value === true || value === "true" || value === "True" || value === 1; onRendered(function () { input.focus(); }); function setValue(blur) { + var checkedValue = input.checked; + + if (trueValueSet && checkedValue) { + checkedValue = editorParams.trueValue; + } else if (falseValueSet && !checkedValue) { + checkedValue = editorParams.falseValue; + } else { + checkedValue = checkedValue; + } + if (tristate) { if (!blur) { if (input.checked && !indetermState) { @@ -13385,17 +13832,17 @@ return indetermValue; } else { indetermState = false; - return input.checked; + return checkedValue; } } else { if (indetermState) { return indetermValue; } else { - return input.checked; + return checkedValue; } } } else { - return input.checked; + return checkedValue; } } //submit new value on blur @@ -13425,13 +13872,14 @@ number: number, range: range, select: select, + list: list, autocomplete: autocomplete, star: star, progress: progress, tickCross: tickCross }; - var Edit = /*#__PURE__*/function (_Module) { + var Edit$1 = /*#__PURE__*/function (_Module) { _inherits(Edit, _Module); var _super = _createSuper(Edit); @@ -13880,15 +14328,7 @@ if (cell) { this.currentCell = false; cellEl = cell.getElement(); - - if (cancel) { - if (cell.column.modules.validate && this.table.modExists("validate")) { - this.table.modules.validate.cellValidate(cell); - } - } else { - cellEl.classList.remove("tabulator-validation-fail"); - } - + this.dispatch("edit-editor-clear", cell, cancel); cellEl.classList.remove("tabulator-editing"); while (cellEl.firstChild) { @@ -14027,16 +14467,12 @@ } return; - } //handle successfull value change + } //handle successful value change function success(value) { if (self.currentCell === cell) { - var valid = true; - - if (cell.column.modules.validate && self.table.modExists("validate") && self.table.options.validationMode != "manual") { - valid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value); - } + var valid = self.chain("edit-success", [cell, value], true, true); if (valid === true || self.table.options.validationMode === "highlight") { self.clearEditor(); @@ -14052,20 +14488,11 @@ } cell.setValue(value, true); - - if (valid !== true) { - element.classList.add("tabulator-validation-fail"); - self.table.externalEvents.dispatch("validationFailed", cell.getComponent(), value, valid); - return false; - } - - return true; + return valid === true; } else { self.invalidEdit = true; - element.classList.add("tabulator-validation-fail"); self.focusCellNoEvent(cell, true); rendered(); - self.table.externalEvents.dispatch("validationFailed", cell.getComponent(), value, valid); return false; } } @@ -14115,6 +14542,7 @@ 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 @@ -14177,10 +14605,7 @@ if (cell.modules.edit && cell.modules.edit.edited) { cell.modules.edit.edited = false; - - if (cell.modules.validate) { - cell.modules.validate.invalid = false; - } + this.dispatch("edit-edited-clear", cell); } editIndex = this.editedCells.indexOf(cell); @@ -14194,9 +14619,9 @@ return Edit; }(Module); - Edit.moduleName = "edit"; //load defaults + Edit$1.moduleName = "edit"; //load defaults - Edit.editors = defaultEditors; + Edit$1.editors = defaultEditors; var ExportRow = function ExportRow(type, columns, component, indent) { _classCallCheck(this, ExportRow); @@ -15235,6 +15660,7 @@ delete self.headerFilters[field]; } + column.modules.filter.value = value; filterChangeCheck = JSON.stringify(self.headerFilters); if (self.prevHeaderFilterChangeCheck !== filterChangeCheck) { @@ -15269,7 +15695,8 @@ cellWrapper, typingTimer, searchTrigger, - params; //handle aborted edit + params; + column.modules.filter.value = initialValue; //handle aborted edit function cancel() {} @@ -15474,7 +15901,7 @@ key: "getHeaderFilterValue", value: function getHeaderFilterValue(column) { if (column.modules.filter && column.modules.filter.headerElement) { - return column.modules.filter.headerElement.value; + return column.modules.filter.value; } else { console.warn("Column Filter Error - No header filter set on column:", column.getField()); } @@ -15812,7 +16239,7 @@ activeRowComponents = []; if (this.subscribedExternal("dataFiltering")) { - this.dispatchExternal("dataFiltering", this.getFilters()); + this.dispatchExternal("dataFiltering", this.getFilters(true)); } if (this.table.options.filterMode !== "remote" && (this.filterList.length || Object.keys(this.headerFilters).length)) { @@ -15829,7 +16256,7 @@ activeRows.forEach(function (row) { activeRowComponents.push(row.getComponent()); }); - this.dispatchExternal("dataFiltered", this.getFilters(), activeRowComponents); + this.dispatchExternal("dataFiltered", this.getFilters(true), activeRowComponents); } return activeRows; @@ -15924,10 +16351,13 @@ number = String(number).split("."); integer = number[0]; decimal = number.length > 1 ? decimalSym + number[1] : ""; - rgx = /(\d+)(\d{3})/; - while (rgx.test(integer)) { - integer = integer.replace(rgx, "$1" + thousandSym + "$2"); + if (formatterParams.thousand !== false) { + rgx = /(\d+)(\d{3})/; + + while (rgx.test(integer)) { + integer = integer.replace(rgx, "$1" + thousandSym + "$2"); + } } return after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal; @@ -15941,9 +16371,20 @@ 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 = data[formatterParams.labelField]; + label = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data); } if (formatterParams.label) { @@ -16044,10 +16485,11 @@ 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 (truthy && value || value === true || value === "true" || value === "True" || value === 1 || value === "1") { + 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 { @@ -16069,11 +16511,19 @@ var value = cell.getValue(); if (typeof DT != "undefined") { - var newDatetime = inputFormat === "iso" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat); + 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.shiftTimezone(formatterParams.timezone); + newDatetime = newDatetime.setZone(formatterParams.timezone); } return newDatetime.toFormat(outputFormat); @@ -16102,10 +16552,20 @@ var value = cell.getValue(); if (typeof DT != "undefined") { - var newDatetime = inputFormat === "iso" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat); + 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) ; else { + if (humanize) { + return newDatetime.diff(date, unit).toHuman() + (suffix ? " " + suffix : ""); + } else { return parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? " " + suffix : ""); } } else { @@ -16760,7 +17220,10 @@ this.subscribe("row-layout-after", this.layoutRow.bind(this)); this.subscribe("table-layout", this.layout.bind(this)); this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); + this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); this.subscribe("columns-loading", this.reset.bind(this)); + this.subscribe("column-add", this.reinitializeColumns.bind(this)); + this.subscribe("column-delete", 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)); @@ -16779,6 +17242,16 @@ key: "layoutCell", value: function layoutCell(cell) { this.layoutElement(cell.element, cell.column); + } + }, { + key: "reinitializeColumns", + value: function reinitializeColumns() { + var _this2 = this; + + this.reset(); + this.table.columnManager.columnsByIndex.forEach(function (column) { + _this2.initializeColumn(column); + }); } //initialize specific column }, { @@ -16809,7 +17282,6 @@ }, { key: "frozenCheck", value: function 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"); } @@ -16824,7 +17296,7 @@ }, { key: "scrollHorizontal", value: function scrollHorizontal() { - var _this2 = this; + var _this3 = this; var rows; @@ -16836,7 +17308,7 @@ this.layoutCalcRows(); rows.forEach(function (row) { if (row.type === "row") { - _this2.layoutRow(row); + _this3.layoutRow(row); } }); } @@ -16875,19 +17347,19 @@ }, { key: "layoutGroupCalcs", value: function layoutGroupCalcs(groups) { - var _this3 = this; + var _this4 = this; groups.forEach(function (group) { if (group.calcs.top) { - _this3.layoutRow(group.calcs.top); + _this4.layoutRow(group.calcs.top); } if (group.calcs.bottom) { - _this3.layoutRow(group.calcs.bottom); + _this4.layoutRow(group.calcs.bottom); } if (group.groupList && group.groupList.length) { - _this3.layoutGroupCalcs(group.groupList && group.groupList); + _this4.layoutGroupCalcs(group.groupList && group.groupList); } }); } //calculate column positions and layout headers @@ -16895,7 +17367,7 @@ }, { key: "layoutColumnPosition", value: function layoutColumnPosition(allCells) { - var _this4 = this; + var _this5 = this; var leftParents = []; var leftMargin = 0; @@ -16903,23 +17375,23 @@ this.table.columnManager.headersElement.style.marginLeft = this.leftMargin; this.table.columnManager.element.style.paddingRight = this.rightMargin; this.leftColumns.forEach(function (column, i) { - column.modules.frozen.margin = leftMargin + _this4.table.columnManager.scrollLeft + "px"; + column.modules.frozen.margin = leftMargin + _this5.table.columnManager.scrollLeft + "px"; if (column.visible) { leftMargin += column.getWidth(); } - if (i == _this4.leftColumns.length - 1) { + if (i == _this5.leftColumns.length - 1) { column.modules.frozen.edge = true; } else { column.modules.frozen.edge = false; } if (column.parent.isGroup) { - var parentEl = _this4.getColGroupParentElement(column); + var parentEl = _this5.getColGroupParentElement(column); if (!leftParents.includes(parentEl)) { - _this4.layoutElement(parentEl, column); + _this5.layoutElement(parentEl, column); leftParents.push(parentEl); } @@ -16928,12 +17400,12 @@ parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position); } } else { - _this4.layoutElement(column.getElement(), column); + _this5.layoutElement(column.getElement(), column); } if (allCells) { column.cells.forEach(function (cell) { - _this4.layoutElement(cell.getElement(true), column); + _this5.layoutElement(cell.getElement(true), column); }); } }); @@ -16942,23 +17414,23 @@ rightMargin += column.getWidth(); } - column.modules.frozen.margin = _this4.rightPadding - rightMargin + "px"; + column.modules.frozen.margin = _this5.rightPadding - rightMargin + "px"; - if (i == _this4.rightColumns.length - 1) { + if (i == _this5.rightColumns.length - 1) { column.modules.frozen.edge = true; } else { column.modules.frozen.edge = false; } if (column.parent.isGroup) { - _this4.layoutElement(_this4.getColGroupParentElement(column), column); + _this5.layoutElement(_this5.getColGroupParentElement(column), column); } else { - _this4.layoutElement(column.getElement(), column); + _this5.layoutElement(column.getElement(), column); } if (allCells) { column.cells.forEach(function (cell) { - _this4.layoutElement(cell.getElement(true), column); + _this5.layoutElement(cell.getElement(true), column); }); } }); @@ -16972,26 +17444,37 @@ }, { key: "layout", value: function layout() { - var _this5 = this; + var _this6 = this; + + var visibleRows = [], + otherRows = []; if (this.active && !this.blocked) { //calculate row padding - this.calcMargins(); - this.table.rowManager.getDisplayRows().forEach(function (row) { + this.calcMargins(); //calculate left columns + + this.layoutColumnPosition(); + visibleRows = this.table.rowManager.getVisibleRows(); + otherRows = this.table.rowManager.getDisplayRows().filter(function (row) { + return !visibleRows.includes(row); + }); + otherRows.forEach(function (row) { + row.deinitialize(); + }); + visibleRows.forEach(function (row) { if (row.type === "row") { - _this5.layoutRow(row); + _this6.layoutRow(row); } }); - this.layoutCalcRows(); //calculate left columns - - this.layoutColumnPosition(true); + this.layoutCalcRows(); } } }, { key: "layoutRow", value: function layoutRow(row) { - var _this6 = this; + var _this7 = this; + // console.trace("row") var rowEl = row.getElement(); rowEl.style.paddingLeft = this.leftMargin; @@ -17003,14 +17486,14 @@ var cell = row.getCell(column); if (cell) { - _this6.layoutElement(cell.getElement(true), column); + _this7.layoutElement(cell.getElement(true), column); } }); this.rightColumns.forEach(function (column) { var cell = row.getCell(column); if (cell) { - _this6.layoutElement(cell.getElement(true), column); + _this7.layoutElement(cell.getElement(true), column); } }); } @@ -18747,7 +19230,11 @@ key: "tableElementCheck", value: function tableElementCheck() { if (this.table.originalElement && this.table.originalElement.tagName === "TABLE") { - this.parseTable(); + 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."); + } } } }, { @@ -19841,14 +20328,14 @@ _this = _super.call(this, table); _this.menuContainer = null; - _this.menuElements = []; - _this.blurEvent = _this.hideMenu.bind(_assertThisInitialized(_this)); - _this.escEvent = _this.escMenu.bind(_assertThisInitialized(_this)); _this.nestedMenuBlock = false; - _this.positionReversedX = false; _this.currentComponent = null; + _this.rootPopup = null; _this.columnSubscribers = {}; + _this.registerTableOption("menuContainer", undefined); //deprecated + + _this.registerTableOption("rowContextMenu", false); _this.registerTableOption("rowClickMenu", false); @@ -19857,14 +20344,14 @@ _this.registerTableOption("groupClickMenu", false); - _this.registerTableOption("menuContainer", false); - _this.registerColumnOption("headerContextMenu"); _this.registerColumnOption("headerClickMenu"); _this.registerColumnOption("headerMenu"); + _this.registerColumnOption("headerMenuIcon"); + _this.registerColumnOption("contextMenu"); _this.registerColumnOption("clickMenu"); @@ -19875,44 +20362,17 @@ _createClass(Menu, [{ key: "initialize", value: function initialize() { - this.lookupMenuContainer(); + this.deprecationCheck(); this.initializeRowWatchers(); this.initializeGroupWatchers(); this.subscribe("column-init", this.initializeColumn.bind(this)); } }, { - key: "lookupMenuContainer", - value: function lookupMenuContainer() { - this.menuContainer = this.table.options.menuContainer; - - if (typeof this.menuContainer === "string") { - this.menuContainer = document.querySelector(this.menuContainer); - - if (!this.menuContainer) { - console.warn("Menu Error - no container element found matching selector:", this.table.options.menuContainer, "(defaulting to document body)"); - } - } else if (this.menuContainer === true) { - this.menuContainer = this.table.element; - } - - if (this.menuContainer && !this.checkMenuContainerIsParent(this.menuContainer)) { - this.menuContainer = false; - console.warn("Menu Error - container element does not contain this table:", this.table.options.menuContainer, "(defaulting to document body)"); - } - - if (!this.menuContainer) { - this.menuContainer = document.body; - } - } - }, { - key: "checkMenuContainerIsParent", - value: function checkMenuContainerIsParent(container) { - var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.table.element; - - if (container === element) { - return true; - } else { - return element.parentNode ? this.checkMenuContainerIsParent(container, element.parentNode) : false; + key: "deprecationCheck", + value: function deprecationCheck() { + if (typeof this.table.options.menuContainer !== "undefined") { + console.warn("Use of the menuContainer option is now deprecated. Please use the popupContainer option instead"); + this.table.options.popupContainer = this.table.options.menuContainer; } } }, { @@ -19976,10 +20436,25 @@ value: function initializeColumnHeaderMenu(column) { var _this2 = this; - var headerMenuEl; + var icon = column.definition.headerMenuIcon, + headerMenuEl; headerMenuEl = document.createElement("span"); - headerMenuEl.classList.add("tabulator-header-menu-button"); - headerMenuEl.innerHTML = "⋮"; + 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", function (e) { e.stopPropagation(); e.preventDefault(); @@ -20019,16 +20494,17 @@ component = component._row; } - menu = typeof menu == "function" ? menu.call(this.table, component.getComponent(), e) : menu; + menu = typeof menu == "function" ? menu.call(this.table, e, component.getComponent()) : menu; this.loadMenu(e, component, menu); } }, { key: "loadMenu", - value: function loadMenu(e, component, menu, parentEl) { + value: function loadMenu(e, component, menu, parentEl, parentPopup) { var _this3 = this; - var touch = !(e instanceof MouseEvent); - var menuEl = document.createElement("div"); + var touch = !(e instanceof MouseEvent), + menuEl = document.createElement("div"), + popup; menuEl.classList.add("tabulator-menu"); if (!touch) { @@ -20043,7 +20519,7 @@ if (!parentEl) { if (this.nestedMenuBlock) { //abort if child menu already open - if (this.isOpen()) { + if (this.rootPopup) { return; } } else { @@ -20052,8 +20528,13 @@ }, 100); } - this.hideMenu(); - this.menuElements = []; + if (this.rootPopup) { + this.rootPopup.hide(); + } + + this.rootPopup = popup = this.popup(menuEl); + } else { + popup = parentPopup.child(menuEl); } menu.forEach(function (item) { @@ -20090,9 +20571,7 @@ itemEl.addEventListener("click", function (e) { e.stopPropagation(); - _this3.hideOldSubMenus(menuEl); - - _this3.loadMenu(e, component, item.menu, itemEl); + _this3.loadMenu(e, component, item.menu, itemEl, popup); }); } else { if (item.action) { @@ -20111,116 +20590,22 @@ menuEl.appendChild(itemEl); }); menuEl.addEventListener("click", function (e) { - _this3.hideMenu(); + _this3.rootPopup.hide(); }); - this.menuElements.push(menuEl); - this.positionMenu(menuEl, parentEl, touch, e); - this.currentComponent = component; - this.dispatchExternal("menuOpened", component.getComponent()); - } - }, { - key: "hideOldSubMenus", - value: function hideOldSubMenus(menuEl) { - var index = this.menuElements.indexOf(menuEl); - - if (index > -1) { - for (var i = this.menuElements.length - 1; i > index; i--) { - var el = this.menuElements[i]; - - if (el.parentNode) { - el.parentNode.removeChild(el); - } - - this.menuElements.pop(); - } - } - } - }, { - key: "positionMenu", - value: function positionMenu(element, parentEl, touch, e) { - var _this4 = this; - - var x, y, parentOffset; - - if (!parentEl) { - x = touch ? e.touches[0].pageX : e.pageX; - y = touch ? e.touches[0].pageY : e.pageY; - - if (this.menuContainer !== document.body) { - parentOffset = Helpers.elOffset(this.menuContainer); - x -= parentOffset.left; - y -= parentOffset.top; - } - - this.positionReversedX = false; - } else { - parentOffset = Helpers.elOffset(parentEl); - x = parentOffset.left + parentEl.offsetWidth; - y = parentOffset.top - 1; - } - - element.style.top = y + "px"; - element.style.left = x + "px"; - setTimeout(function () { - _this4.table.rowManager.element.addEventListener("scroll", _this4.blurEvent); - - document.body.addEventListener("click", _this4.blurEvent); - document.body.addEventListener("contextmenu", _this4.blurEvent); - window.addEventListener("resize", _this4.blurEvent); - document.body.addEventListener("keydown", _this4.escEvent); - }, 100); - this.menuContainer.appendChild(element); //move menu to start on right edge if it is too close to the edge of the screen + popup.show(parentEl || e); - if (x + element.offsetWidth >= this.menuContainer.offsetWidth || this.positionReversedX) { - element.style.left = ""; + if (popup === this.rootPopup) { + this.rootPopup.hideOnBlur(function () { + _this3.rootPopup = null; - if (parentEl) { - element.style.right = this.menuContainer.offsetWidth - parentOffset.left + "px"; - } else { - element.style.right = this.menuContainer.offsetWidth - x + "px"; - } - - this.positionReversedX = true; - } //move menu to start on bottom edge if it is too close to the edge of the screen - - - if (y + element.offsetHeight > this.menuContainer.offsetHeight) { - if (parentEl) { - element.style.top = parseInt(element.style.top) - element.offsetHeight + parentEl.offsetHeight + 1 + "px"; - } else { - element.style.top = parseInt(element.style.top) - element.offsetHeight + "px"; - } - } - } - }, { - key: "isOpen", - value: function isOpen() { - return !!this.menuElements.length; - } - }, { - key: "escMenu", - value: function escMenu(e) { - if (e.keyCode == 27) { - this.hideMenu(); - } - } - }, { - key: "hideMenu", - value: function hideMenu() { - this.menuElements.forEach(function (menuEl) { - if (menuEl.parentNode) { - menuEl.parentNode.removeChild(menuEl); - } - }); - document.body.removeEventListener("keydown", this.escEvent); - document.body.removeEventListener("click", this.blurEvent); - document.body.removeEventListener("contextmenu", this.blurEvent); - window.removeEventListener("resize", this.blurEvent); - this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); + if (_this3.currentComponent) { + _this3.dispatchExternal("menuClosed", _this3.currentComponent.getComponent()); - if (this.currentComponent) { - this.dispatchExternal("menuClosed", this.currentComponent.getComponent()); - this.currentComponent = null; + _this3.currentComponent = null; + } + }); + this.currentComponent = component; + this.dispatchExternal("menuOpened", component.getComponent()); } } }]); @@ -21234,6 +21619,8 @@ _this.registerColumnOption("mutatorClipboardParams"); + _this.registerColumnOption("mutateLink"); + return _this; } @@ -21241,6 +21628,7 @@ key: "initialize", value: function 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)); @@ -21347,6 +21735,25 @@ return value; } + }, { + key: "mutateLink", + value: function mutateLink(cell) { + var links = cell.column.definition.mutateLink; + + if (links) { + if (!Array.isArray(links)) { + links = [links]; + } + + links.forEach(function (link) { + var linkCell = cell.row.getCell(link); + + if (linkCell) { + linkCell.setValue(linkCell.getValue(), true, true); + } + }); + } + } }, { key: "enable", value: function enable() { @@ -21533,6 +21940,7 @@ 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)); @@ -21612,6 +22020,7 @@ this.table.rowManager.getTableElement().removeChild(testElRow); } + this.dispatchExternal("pageSizeChanged", this.size); this.generatePageSizeSelectList(); } }, { @@ -21899,11 +22308,11 @@ } } } else { - this.table.footerManager.append(this.pageCounterElement); + this.footerAppend(this.pageCounterElement); } } - this.table.footerManager.append(this.element, this); + this.footerAppend(this.element); } this.page = this.table.options.paginationInitialPage; @@ -22023,6 +22432,7 @@ if (size > 0) { this.size = size; + this.dispatchExternal("pageSizeChanged", size); } if (this.pageSizeSelect) { @@ -22793,85 +23203,299 @@ data.groupHeader = this.table.options.groupHeader; } } - - return data; + + return data; + } + }, { + key: "getPageConfig", + value: function 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 + + }, { + key: "parseColumns", + value: function parseColumns(columns) { + var _this3 = this; + + var definitions = [], + excludedKeys = ["headerContextMenu", "headerMenu", "contextMenu", "clickMenu"]; + columns.forEach(function (column) { + var defStore = {}, + colDef = column.getDefinition(), + keys; + + if (column.isGroup) { + defStore.title = colDef.title; + defStore.columns = _this3.parseColumns(column.getColumns()); + } else { + defStore.field = column.getField(); + + if (_this3.config.columns === true || _this3.config.columns == undefined) { + keys = Object.keys(colDef); + keys.push("width"); + } else { + keys = _this3.config.columns; + } + + keys.forEach(function (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; + } + }]); + + return Persistence; + }(Module); + + Persistence.moduleName = "persistence"; + Persistence.moduleInitOrder = -10; //load defaults + + Persistence.readers = defaultReaders; + Persistence.writers = defaultWriters; + + var Popup$1 = /*#__PURE__*/function (_Module) { + _inherits(Popup, _Module); + + var _super = _createSuper(Popup); + + function Popup(table) { + var _this; + + _classCallCheck(this, Popup); + + _this = _super.call(this, table); + _this.columnSubscribers = {}; + + _this.registerTableOption("rowContextPopup", false); + + _this.registerTableOption("rowClickPopup", false); + + _this.registerTableOption("groupContextPopup", false); + + _this.registerTableOption("groupClickPopup", false); + + _this.registerColumnOption("headerContextPopup"); + + _this.registerColumnOption("headerClickPopup"); + + _this.registerColumnOption("headerPopup"); + + _this.registerColumnOption("headerPopupIcon"); + + _this.registerColumnOption("contextPopup"); + + _this.registerColumnOption("clickPopup"); + + return _this; + } + + _createClass(Popup, [{ + key: "initialize", + value: function initialize() { + this.initializeRowWatchers(); + this.initializeGroupWatchers(); + this.subscribe("column-init", this.initializeColumn.bind(this)); + } + }, { + key: "initializeRowWatchers", + value: function 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)); + } + } + }, { + key: "initializeGroupWatchers", + value: function 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)); + } + } + }, { + key: "initializeColumn", + value: function 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.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); + } + } + }, { + key: "initializeColumnHeaderPopup", + value: function initializeColumnHeaderPopup(column) { + var _this2 = this; + + 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", function (e) { + e.stopPropagation(); + e.preventDefault(); + + _this2.loadPopupEvent(column.definition.headerPopup, e, column); + }); + column.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild); + } + }, { + key: "loadPopupTableCellEvent", + value: function loadPopupTableCellEvent(option, e, cell) { + if (cell._cell) { + cell = cell._cell; + } + + if (cell.column.definition[option]) { + this.loadPopupEvent(cell.column.definition[option], e, cell); + } } }, { - key: "getPageConfig", - value: function getPageConfig() { - var data = {}; + key: "loadPopupTableColumnEvent", + value: function loadPopupTableColumnEvent(option, e, column) { + if (column._column) { + column = column._column; + } - if (this.config.page) { - if (this.config.page === true || this.config.page.size) { - data.paginationSize = this.table.modules.page.getPageSize(); - } + if (column.definition[option]) { + this.loadPopupEvent(column.definition[option], e, column); + } + } + }, { + key: "loadPopupEvent", + value: function loadPopupEvent(contents, e, component) { + var renderedCallback; - if (this.config.page === true || this.config.page.page) { - data.paginationInitialPage = this.table.modules.page.getPage(); - } + function onRendered(callback) { + renderedCallback = callback; } - return data; - } //parse columns for data to store + 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); + } }, { - key: "parseColumns", - value: function parseColumns(columns) { + key: "loadPopup", + value: function loadPopup(e, component, contents, renderedCallback) { var _this3 = this; - var definitions = [], - excludedKeys = ["headerContextMenu", "headerMenu", "contextMenu", "clickMenu"]; - columns.forEach(function (column) { - var defStore = {}, - colDef = column.getDefinition(), - keys; - - if (column.isGroup) { - defStore.title = colDef.title; - defStore.columns = _this3.parseColumns(column.getColumns()); - } else { - defStore.field = column.getField(); + var touch = !(e instanceof MouseEvent), + contentsEl, + popup; - if (_this3.config.columns === true || _this3.config.columns == undefined) { - keys = Object.keys(colDef); - keys.push("width"); - } else { - keys = _this3.config.columns; - } + if (contents instanceof HTMLElement) { + contentsEl = contents; + } else { + contentsEl = document.createElement("div"); + contentsEl.innerHTML = contents; + } - keys.forEach(function (key) { - switch (key) { - case "width": - defStore.width = column.getWidth(); - break; + contentsEl.classList.add("tabulator-popup"); + contentsEl.addEventListener("click", function (e) { + e.stopPropagation(); + }); - case "visible": - defStore.visible = column.visible; - break; + if (!touch) { + e.preventDefault(); + } - default: - if (typeof colDef[key] !== "function" && excludedKeys.indexOf(key) === -1) { - defStore[key] = colDef[key]; - } + popup = this.popup(contentsEl); - } - }); - } + if (typeof renderedCallback === "function") { + popup.renderCallback(renderedCallback); + } - definitions.push(defStore); + popup.show(e).hideOnBlur(function () { + _this3.dispatchExternal("popupClosed", component.getComponent()); }); - return definitions; + this.dispatchExternal("popupOpened", component.getComponent()); } }]); - return Persistence; + return Popup; }(Module); - Persistence.moduleName = "persistence"; - Persistence.moduleInitOrder = 1; //load defaults - - Persistence.readers = defaultReaders; - Persistence.writers = defaultWriters; + Popup$1.moduleName = "popup"; var Print = /*#__PURE__*/function (_Module) { _inherits(Print, _Module); @@ -23354,127 +23978,161 @@ _this.startColumn = false; _this.startX = false; _this.startWidth = false; + _this.latestX = false; _this.handle = null; - _this.prevHandle = null; + _this.initialNextColumn = null; + _this.nextColumn = null; + _this.initialized = false; _this.registerColumnOption("resizable", true); + _this.registerTableOption("resizableColumnFit", false); + return _this; } _createClass(ResizeColumns, [{ key: "initialize", value: function initialize() { - // if(this.table.options.resizableColumns){ - this.subscribe("cell-layout", this.layoutCellHandles.bind(this)); - this.subscribe("column-init", this.layoutColumnHeader.bind(this)); // } + this.subscribe("column-rendered", this.layoutColumnHeader.bind(this)); + } + }, { + key: "initializeEventWatchers", + value: function 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-delete", this.deInitializeComponent.bind(this)); + this.subscribe("column-height", this.resizeHandle.bind(this)); + this.initialized = true; + } } }, { key: "layoutCellHandles", value: function layoutCellHandles(cell) { if (cell.row.type === "row") { - this.initializeColumn("cell", cell.column, cell.element); + this.deInitializeComponent(cell); + this.initializeColumn("cell", cell, cell.column, cell.element); } } }, { key: "layoutColumnHeader", value: function layoutColumnHeader(column) { - this.initializeColumn("header", column, column.element); + if (column.definition.resizable) { + this.initializeEventWatchers(); + this.deInitializeComponent(column); + this.initializeColumn("header", column, column, column.element); + } + } + }, { + key: "columnLayoutUpdated", + value: function columnLayoutUpdated(column) { + var prev = column.prevColumn(); + this.reinitializeColumn(column); + + if (prev) { + this.reinitializeColumn(prev); + } + } + }, { + key: "reinitializeColumn", + value: function reinitializeColumn(column) { + column.cells.forEach(function (cell) { + if (cell.modules.resize && cell.modules.resize.handleEl) { + cell.element.after(cell.modules.resize.handleEl); + } + }); + + if (column.modules.resize && column.modules.resize.handleEl) { + column.element.after(column.modules.resize.handleEl); + } } }, { key: "initializeColumn", - value: function initializeColumn(type, column, element) { + value: function initializeColumn(type, component, column, element) { var self = this, variableHeight = false, - mode = column.definition.resizable; //set column resize mode + mode = column.definition.resizable, + config = {}, + nearestColumn = column.getLastColumn(); //set column resize mode if (type === "header") { variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight; - column.modules.resize = { + config = { variableHeight: variableHeight }; } - if (mode === true || mode == type) { - var handle = document.createElement('div'); + if ((mode === true || mode == type) && this._checkResizability(nearestColumn)) { + var handle = document.createElement('span'); handle.className = "tabulator-col-resize-handle"; - var prevHandle = document.createElement('div'); - prevHandle.className = "tabulator-col-resize-handle prev"; handle.addEventListener("click", function (e) { e.stopPropagation(); }); var handleDown = function handleDown(e) { - var nearestColumn = column.getLastColumn(); - - if (nearestColumn && self._checkResizability(nearestColumn)) { - self.startColumn = column; + self.startColumn = column; + self.initialNextColumn = self.nextColumn = nearestColumn.nextColumn(); - self._mouseDown(e, nearestColumn, handle); - } + self._mouseDown(e, nearestColumn, handle); }; handle.addEventListener("mousedown", handleDown); handle.addEventListener("touchstart", handleDown, { passive: true - }); //reszie column on double click + }); //resize column on double click handle.addEventListener("dblclick", function (e) { - var col = column.getLastColumn(), - oldWidth; - - if (col && self._checkResizability(col)) { - oldWidth = col.getWidth(); - e.stopPropagation(); - col.reinitializeWidth(true); + var oldWidth = nearestColumn.getWidth(); + e.stopPropagation(); + nearestColumn.reinitializeWidth(true); - if (oldWidth !== col.getWidth()) { - self.dispatch("column-resized", col); - self.table.externalEvents.dispatch("columnResized", col.getComponent()); - } + if (oldWidth !== nearestColumn.getWidth()) { + self.dispatch("column-resized", nearestColumn); + self.table.externalEvents.dispatch("columnResized", nearestColumn.getComponent()); } }); - prevHandle.addEventListener("click", function (e) { - e.stopPropagation(); - }); - - var prevHandleDown = function prevHandleDown(e) { - var nearestColumn, colIndex, prevColumn; - nearestColumn = column.getFirstColumn(); + config.handleEl = handle; - if (nearestColumn) { - colIndex = self.table.columnManager.findColumnIndex(nearestColumn); - prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false; - - if (prevColumn && self._checkResizability(prevColumn)) { - self.startColumn = column; - - self._mouseDown(e, prevColumn, prevHandle); - } - } - }; + if (element.parentNode) { + element.after(handle); + } + } - prevHandle.addEventListener("mousedown", prevHandleDown); - prevHandle.addEventListener("touchstart", prevHandleDown, { - passive: true - }); //resize column on double click + component.modules.resize = config; + } + }, { + key: "deInitializeColumn", + value: function deInitializeColumn(column) { + var _this2 = this; - prevHandle.addEventListener("dblclick", function (e) { - var nearestColumn, colIndex, prevColumn; - nearestColumn = column.getFirstColumn(); + this.deInitializeComponent(column); + column.cells.forEach(function (cell) { + _this2.deInitializeComponent(cell); + }); + } + }, { + key: "deInitializeComponent", + value: function deInitializeComponent(component) { + var handleEl; - if (nearestColumn) { - colIndex = self.table.columnManager.findColumnIndex(nearestColumn); - prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false; + if (component.modules.resize) { + handleEl = component.modules.resize.handleEl; - if (prevColumn && self._checkResizability(prevColumn)) { - e.stopPropagation(); - prevColumn.reinitializeWidth(true); - } - } - }); - element.appendChild(handle); - element.appendChild(prevHandle); + if (handleEl && handleEl.parentElement) { + handleEl.parentElement.removeChild(handleEl); + } + } + } + }, { + key: "resizeHandle", + value: function resizeHandle(component, height) { + if (component.modules.resize && component.modules.resize.handleEl) { + component.modules.resize.handleEl.style.height = height; } } }, { @@ -23489,11 +24147,38 @@ self.table.element.classList.add("tabulator-block-select"); function mouseMove(e) { - // self.table.columnManager.tempScrollBlock(); + 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) { - column.setWidth(self.startWidth - ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX)); - } else { - column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX)); + 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)) { + var 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.renderer.rerenderColumns(true); @@ -23533,6 +24218,7 @@ } 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); @@ -24748,8 +25434,21 @@ emptyAlign = 0; if (typeof DT != "undefined") { - a = format === "iso" ? DT.fromISO(String(a)) : DT.fromFormat(String(a), format); - b = format === "iso" ? DT.fromISO(String(b)) : DT.fromFormat(String(b), format); + if (DT.isDateTime(a)) { + a = a; + } else if (format === "iso") { + a = DT.fromISO(String(a)); + } else { + a = DT.fromFormat(String(a), format); + } + + if (DT.isDateTime(b)) { + b = b; + } else if (format === "iso") { + b = DT.fromISO(String(b)); + } else { + b = DT.fromFormat(String(b), format); + } if (!a.isValid) { emptyAlign = !b.isValid ? 0 : -1; @@ -25360,6 +26059,151 @@ Sort.sorters = defaultSorters; + var Tooltip = /*#__PURE__*/function (_Module) { + _inherits(Tooltip, _Module); + + var _super = _createSuper(Tooltip); + + function Tooltip(table) { + var _this; + + _classCallCheck(this, Tooltip); + + _this = _super.call(this, 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"); + + return _this; + } + + _createClass(Tooltip, [{ + key: "initialize", + value: function initialize() { + this.deprecationCheck(); + this.subscribe("column-init", this.initializeColumn.bind(this)); + } + }, { + key: "deprecationCheck", + value: function deprecationCheck() { + if (typeof this.table.options.tooltipGenerationMode !== "undefined") { + console.warn("Use of the tooltipGenerationMode option is now deprecated. This option is no longer needed as tooltips are always generated on hover now"); + } + } + }, { + key: "initializeColumn", + value: function 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")); + } + } + }, { + key: "mousemoveCheck", + value: function 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); + } + } + }, { + key: "mouseoutCheck", + value: function mouseoutCheck(action, e, component) { + if (!this.popupInstance) { + this.clearPopup(); + } + } + }, { + key: "clearPopup", + value: function clearPopup(action, e, component) { + clearTimeout(this.timeout); + this.timeout = null; + + if (this.popupInstance) { + this.popupInstance.hide(); + } + } + }, { + key: "loadTooltip", + value: function loadTooltip(e, component, tooltip) { + var _this2 = this; + + 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, function (value) { + contentsEl.innerHTML = tooltip = value || component.definition.title; + }); + } else { + tooltip = component.definition.title; + } + } + } + + contentsEl.innerHTML = tooltip; + } + + if (tooltip || tooltip === 0 || tooltip === "0" || tooltip === false) { + contentsEl.classList.add("tabulator-tooltip"); + contentsEl.addEventListener("mousemove", function (e) { + return 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(function () { + _this2.dispatchExternal("TooltipClosed", component.getComponent()); + + _this2.popupInstance = null; + }); + this.dispatchExternal("TooltipOpened", component.getComponent()); + } + } + }]); + + return Tooltip; + }(Module); + + Tooltip.moduleName = "tooltip"; + var defaultValidators = { //is integer integer: function integer(cell, value, parameters) { @@ -25533,6 +26377,47 @@ value: function 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 ////////// + /////////////////////////////////// + + }, { + key: "editValidate", + value: function editValidate(cell, value, previousValue) { + var _this2 = this; + + 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(function () { + cell.getElement().classList.add("tabulator-validation-fail"); + + _this2.dispatchExternal("validationFailed", cell.getComponent(), value, valid); + }); + } + + return valid; + } + }, { + key: "editorClear", + value: function editorClear(cell, cancelled) { + if (cancelled) { + if (cell.column.modules.validate) { + this.cellValidate(cell); + } + } + + cell.getElement().classList.remove("tabulator-validation-fail"); + } + }, { + key: "editedClear", + value: function editedClear(cell) { + if (cell.modules.validate) { + cell.modules.validate.invalid = false; + } } /////////////////////////////////// ////////// Cell Functions ///////// /////////////////////////////////// @@ -25540,7 +26425,7 @@ }, { key: "cellIsValid", value: function cellIsValid(cell) { - return cell.modules.validate ? !cell.modules.validate.invalid : true; + return cell.modules.validate ? cell.modules.validate.invalid || true : true; } }, { key: "cellValidate", @@ -25553,11 +26438,11 @@ }, { key: "columnValidate", value: function columnValidate(column) { - var _this2 = this; + var _this3 = this; var invalid = []; column.cells.forEach(function (cell) { - if (!_this2.cellValidate(cell)) { + if (!_this3.cellValidate(cell)) { invalid.push(cell.getComponent()); } }); @@ -25569,11 +26454,11 @@ }, { key: "rowValidate", value: function rowValidate(row) { - var _this3 = this; + var _this4 = this; var invalid = []; row.cells.forEach(function (cell) { - if (!_this3.cellValidate(cell)) { + if (!_this4.cellValidate(cell)) { invalid.push(cell.getComponent()); } }); @@ -25585,7 +26470,7 @@ }, { key: "userClearCellValidation", value: function userClearCellValidation(cells) { - var _this4 = this; + var _this5 = this; if (!cells) { cells = this.getInvalidCells(); @@ -25596,7 +26481,7 @@ } cells.forEach(function (cell) { - _this4.clearValidation(cell._getSelf()); + _this5.clearValidation(cell._getSelf()); }); } }, { @@ -25697,13 +26582,13 @@ key: "validate", value: function validate(validators, cell, value) { var self = this, - valid = [], + failedValidators = [], invalidIndex = this.invalidCells.indexOf(cell); if (validators) { validators.forEach(function (item) { if (!item.func.call(self, cell.getComponent(), value, item.params)) { - valid.push({ + failedValidators.push({ type: item.type, parameters: item.params }); @@ -25711,13 +26596,11 @@ }); } - valid = valid.length ? valid : true; - if (!cell.modules.validate) { cell.modules.validate = {}; } - if (valid === true) { + if (!failedValidators.length) { cell.modules.validate.invalid = false; cell.getElement().classList.remove("tabulator-validation-fail"); @@ -25725,7 +26608,7 @@ this.invalidCells.splice(invalidIndex, 1); } } else { - cell.modules.validate.invalid = true; + cell.modules.validate.invalid = failedValidators; if (this.table.options.validationMode !== "manual") { cell.getElement().classList.add("tabulator-validation-fail"); @@ -25736,7 +26619,7 @@ } } - return valid; + return failedValidators.length ? failedValidators : true; } }, { key: "getInvalidCells", @@ -25779,7 +26662,7 @@ ColumnCalcsModule: ColumnCalcs, DataTreeModule: DataTree, DownloadModule: Download, - EditModule: Edit, + EditModule: Edit$1, ExportModule: Export, FilterModule: Filter, FormatModule: Format, @@ -25797,6 +26680,7 @@ MutatorModule: Mutator, PageModule: Page, PersistenceModule: Persistence, + PopupModule: Popup$1, PrintModule: Print, ReactiveDataModule: ReactiveData, ResizeColumnsModule: ResizeColumns, @@ -25805,6 +26689,7 @@ ResponsiveLayoutModule: ResponsiveLayout, SelectRowModule: SelectRow, SortModule: Sort, + TooltipModule: Tooltip, ValidateModule: Validate }); diff --git a/dist/js/tabulator.js.map b/dist/js/tabulator.js.map index 650c517e0..9aa107e63 100644 --- a/dist/js/tabulator.js.map +++ b/dist/js/tabulator.js.map @@ -1 +1 @@ -{"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/TableRegistry.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/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/select.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.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/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/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //separator for nested data\r\n\r\n\ttooltipGenerationMode:\"load\", //when to generate tooltips\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\tdataLoaderErrorTimeout:3000,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}\r\n","export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key){\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","import Column from './Column.js';\r\n\r\n//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this._column.getTitleDownload();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"maxInitialWidth\": undefined,\r\n\t\"tooltip\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerTooltip\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//update tooltip on mouse enter\r\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\"){\r\n\t\t\telement.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\t\tthis._generateTooltip();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//generate tooltip text\r\n\t_generateTooltip(){\r\n\t\tvar tooltip = this.column.tooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\ttooltip = this.value;\r\n\t\t\t}else if(typeof(tooltip) == \"function\"){\r\n\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof tooltip === \"undefined\"){\r\n\t\t\t\ttooltip = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate){\r\n\t\tvar changed = this.setValueProcessData(value, mutate);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tif(this.column.definition.cellEdited){\r\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value !== value){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\t\tthis._generateTooltip();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.tooltip = false; //hold column tooltip\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleDownload = null;\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.maxInitialWidth = null;\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\tsetTooltip(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\t//set header tooltips\r\n\t\tvar tooltip = def.headerTooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(def.field){\r\n\t\t\t\t\tthis.langBind(\"columns|\" + def.field, (value) => {\r\n\t\t\t\t\t\tthis.element.setAttribute(\"title\", value || def.title);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.element.setAttribute(\"title\", def.title);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof(tooltip) == \"function\"){\r\n\t\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.setTooltip();\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\r\n\t\t//update header tooltip on mouse enter\r\n\t\tthis.element.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\tthis.setTooltip();\r\n\t\t});\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif (def.maxInitialWidth) {\r\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set tooltip if present\r\n\t\tthis.tooltip = this.definition.tooltip;\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\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);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this.titleDownload;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\t// maxInitialWidth ignored here as width specified\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData(force);\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(force){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tvar setTo = maxWidth + 1;\r\n\t\t\t\tif (this.maxInitialWidth && !force) {\r\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\r\n\t\t\t\t}\r\n\t\t\t\tthis.setWidthActual(setTo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn clone;\r\n\t}\r\n}","export default class OptionsList {\r\n\tconstructor(table, msgType, defaults = {}){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = Object.assign({}, defaults)\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determine weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\t\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t\t\r\n\t\tthis.fitDataColAvg = 0;\r\n\t\t\r\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\r\n\t\t\r\n\t\tthis.visibleRows = null;\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.isFitData = false;\r\n\t\t\r\n\t\tthis.columns = [];\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.compatibilityCheck();\r\n\t\tthis.layoutCheck();\r\n\t\tthis.vertScrollListen();\r\n\t}\r\n\t\r\n\tcompatibilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\t\t\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\t\t\r\n\t\treturn ok;\r\n\t}\r\n\t\r\n\tlayoutCheck(){\r\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\r\n\t}\r\n\r\n\tvertScrollListen(){\r\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\r\n\t}\r\n\r\n\tclearVisRowCache(){\r\n\t\tthis.visibleRows = null;\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\t\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\t\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\t\t\t\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\r\n\t\t}\r\n\t}\r\n\t\r\n\tcalcWindowBuffer(){\r\n\t\tvar buffer = this.elementVertical.clientWidth;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tif(width > buffer){\r\n\t\t\t\t\tbuffer = width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.windowBuffer = buffer * 2;\r\n\t}\r\n\t\r\n\trerenderColumns(update, blockRedraw){\t\t\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t},\r\n\t\tcolPos = 0;\r\n\t\t\r\n\t\t\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.clear();\r\n\t\t\r\n\t\tthis.calcWindowBuffer();\r\n\t\t\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\t\t\t\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\t\t\t\t\r\n\t\t\t\tconfig.width = width;\r\n\t\t\t\t\r\n\t\t\t\tif (this.isFitData) {\r\n\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t\t\t\t\t//column is visible\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol == -1){\r\n\t\t\t\t\t\tthis.leftCol = this.columns.length;\r\n\t\t\t\t\t\tthis.vDomPadLeft = colPos;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol = this.columns.length;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// column is hidden\r\n\t\t\t\t\tif(this.leftCol !== -1){\r\n\t\t\t\t\t\tthis.vDomPadRight += width;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.vdomHoz = config;\r\n\t\t\t\t\r\n\t\t\t\tcolPos += width;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.reinitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\t\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\t\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\t\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\t\t\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\t\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\t\t\r\n\t\tif(this.isFitData){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.generateCells();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// if(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t// \tbreak;\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// for(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t// \tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\t\t\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn !match;\r\n\t}\r\n\t\r\n\treinitializeRows(){\r\n\t\tvar rows = this.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetVisibleRows(){\r\n\t\tif (!this.visibleRows){\r\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t}\r\n\r\n\t\treturn this.visibleRows;\t\r\n\t}\r\n\t\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\t\r\n\t\t\tlet column = this.columns[this.rightCol + 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t\t\t}\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol - 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\r\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(diff){\r\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\r\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.rightCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\t\t\tthis.rightCol --;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\t\t\tthis.leftCol ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\t\t\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\t\t\t\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn widthDiff;\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\t\t\t\t\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\t\t\t\t\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nimport defaultColumnOptions from './column/defaults/options.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\t\t\tvar topColumn = nextToColumn.getTopColumn()\r\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\r\n\t\t\tvar nextEl = topColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcolumn.columnRendered();\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\tverticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibleColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //holde lements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.created = false;\r\n\r\n\t\tthis.setData(data);\r\n\t}\r\n\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\tthis.element = el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\r\n\t\tif(!this.initialized || force){\r\n\r\n\t\t\tthis.deleteCells();\r\n\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\r\n\t\t\tthis.generateCells();\r\n\r\n\t\t\tthis.initialized = true;\r\n\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t}\r\n\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tvar height = cell.getHeight();\r\n\t\t\tif(height > maxHeight){\r\n\t\t\t\tmaxHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t}else{\r\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t}\r\n\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\t\tif(force){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis.calcHeight(force);\r\n\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\r\n\t\t\tthis.manualHeight = true;\r\n\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\r\n\t\t\tthis.setCellHeight();\r\n\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\r\n\t\t\t//this.reinitialize();\r\n\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\r\n\t\tthis.deleteActual();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\r\n\t\tthis.detatchModules();\r\n\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\r\n\t\tthis.deleteCells();\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.clearRows();\r\n\t\tthis.renderRows();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\t// element.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\r\n\t\t});\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\t\tthis.placeholder = null; //placeholder element\r\n\t\tthis.placeholderContents = null; //placeholder element\r\n\t\t\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\t\t\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\t\t\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\t\t\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\t\t\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\t\t\r\n\t\tthis.renderer = null;\r\n\t}\r\n\t\r\n\t//////////////// Setup Functions /////////////////\r\n\t\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitializePlaceholder(){\r\n\t\t//configure placeholder element\r\n\t\tif(typeof this.table.options.placeholder == \"string\"){\r\n\t\t\tlet el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\t\t\t\r\n\t\t\tlet contents = document.createElement(\"div\");\r\n\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\r\n\t\t\tcontents.innerHTML = this.table.options.placeholder;\r\n\t\t\t\r\n\t\t\tel.appendChild(contents);\r\n\t\t\t\r\n\t\t\tthis.placeholderContents = contents;\r\n\t\t\tthis.placeholder = el;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\t\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializePlaceholder()\r\n\t\tthis.initializeRenderer();\r\n\t\t\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\t\t\r\n\t\tthis.firstRender = true;\r\n\t\t\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\t\t\t\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\r\n\t\t\t\tthis._positionPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//handle vertical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\t\t\t\t\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\t\t\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\t\t\r\n\t\treturn match || false;\r\n\t}\r\n\t\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\t\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\t\t\t\t\r\n\t\t\t\tthis._setDataActual(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\t\t\r\n\t\tthis._wipeElements();\r\n\t\t\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\t\t\t\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\t\t\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\t\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\t\t\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\t\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\t\t\t\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlength = data.length - 1;\r\n\t\t\t\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, true);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn pos;\r\n\t}\r\n\t\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\t\t\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\t\t\t\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\t\t\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\t\t\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\t\t\t\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\t\t\t\t\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(top){\r\n\t\t\t\t\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\t\t\r\n\t\tthis.moveRowActual(from, to, after);\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\t\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\t\t\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\t\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\t\t\r\n\t\tif(from !== to){\r\n\t\t\t\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\t\t\t\r\n\t\t\tif (fromIndex > -1) {\r\n\t\t\t\t\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\t\t\t\t\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\t\t\t\t\r\n\t\t\t\tif (toIndex > -1) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\t\t\t\t\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\t\t\t\t\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\t\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\t\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\t\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\t\t\r\n\t\t\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\t\t\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn nextRow;\r\n\t}\r\n\t\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\t\t\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn prevRow;\r\n\t}\r\n\t\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\t\t\r\n\t\trow = this.findRow(row);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\t\t\r\n\t\treturn rows.length;\r\n\t}\r\n\t\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\t\t\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\t\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\t\t\r\n\t\t\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\t\t\t\t\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.renderTable();\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-refreshed\");\r\n\t\t}\r\n\t}\r\n\t\r\n\trefreshPipelines(handler, stage, index, renderInPosition){\r\n\t\tthis.dispatch(\"data-refreshing\");\r\n\t\t\r\n\t\tif(!handler){\r\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t}\r\n\t\t\r\n\t\t//cascade through data refresh stages\r\n\t\tswitch(stage){\r\n\t\t\tcase \"all\":\r\n\t\t\t//handle case where alldata needs refreshing\r\n\t\t\t\r\n\t\t\tcase \"dataPipeline\":\r\n\t\t\t\r\n\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\tindex = 0;\r\n\t\t\tthis.resetDisplayRows();\r\n\t\t\t\r\n\t\t\tcase \"displayPipeline\":\r\n\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\t\t\t\t\r\n\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcase \"end\":\r\n\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t}\r\n\t}\r\n\t\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\t\t\t\t\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\t\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\t\t\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\t\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\t\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\t\t\r\n\t\tvar output = true;\r\n\t\t\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\t\t\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetVisibleRows(chain, viewable){\r\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\r\n\t\t\r\n\t\tif(chain){\r\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\t\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(false, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\t\t\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\t\t\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\t\t\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t\t\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\t\r\n\trenderTable(){\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\t\t\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tthis._clearTable();\r\n\t\t\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis.renderer.renderRows();\r\n\t\t\t\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"table-layout\");\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\t\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\t\t\r\n\t\tthis._clearPlaceholder();\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\t\r\n\t_showPlaceholder(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\t\t\t\r\n\t\t\tthis.getElement().appendChild(this.placeholder);\r\n\t\t\tthis._positionPlaceholder();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_positionPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\r\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\t\t\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\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));\r\n\t\t\t\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.renderer.resize();\r\n\t\t\t\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._positionPlaceholder();\r\n\t}\r\n\t\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\t\t\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\t\t\t\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRenderInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.redrawBlockRenderInPosition = false;\r\n\t}\r\n\t\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t\t\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\t\t\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\t\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.containerElement = this.createContainerElement(); //containing element\r\n\t\tthis.external = false;\r\n\t\tthis.links = [];\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t\r\n\tcreateContainerElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer-contents\");\r\n\r\n\t\tthis.element.appendChild(el);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.containerElement.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(parent){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(parent){\r\n\t\t\tthis.links.push(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.links.forEach(function(link){\r\n\t\t\tlink.footerRedraw();\r\n\t\t});\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\nimport Row from '../row/Row.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\t\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.el = null;\r\n\t\t\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\t\t\r\n\t\tthis.previousTargets = {};\r\n\t\t\r\n\t\tthis.listeners = [\r\n\t\t\t\"click\",\r\n\t\t\t\"dblclick\",\r\n\t\t\t\"contextmenu\",\r\n\t\t\t\"mouseenter\",\r\n\t\t\t\"mouseleave\",\r\n\t\t\t\"mouseover\",\r\n\t\t\t\"mouseout\",\r\n\t\t\t\"mousemove\",\r\n\t\t\t\"touchstart\",\r\n\t\t\t\"touchend\",\r\n\t\t];\r\n\t\t\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\t\t\r\n\t\tthis.pseudoTrackers = {\r\n\t\t\t\"row\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"cell\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"group\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"column\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t}\r\n\t\t\r\n\t\tthis.pseudoTracking = false;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.el = this.table.element;\r\n\t\t\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\t\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\t\t\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\t\t\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\t\r\n\tbindPseudoEvents(){\r\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\r\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\r\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\r\n\t\t});\r\n\t\t\r\n\t\tthis.pseudoTracking = true;\r\n\t}\r\n\t\r\n\tpseudoMouseEnter(key, e, target){\r\n\t\tif(this.pseudoTrackers[key].target !== target){\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.pseudoMouseLeave(key, e);\r\n\t\t\t\r\n\t\t\tthis.pseudoTrackers[key].target = target;\r\n\t\t\t\r\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpseudoMouseLeave(key, e){\r\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\r\n\t\tlinkedKeys = {\r\n\t\t\t\"row\":[\"cell\"],\r\n\t\t\t\"cell\":[\"row\"],\r\n\t\t};\r\n\t\t\r\n\t\tleaveList = leaveList.filter((item) => {\r\n\t\t\tvar links = linkedKeys[key];\r\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\tleaveList.forEach((key) => {\r\n\t\t\tvar target = this.pseudoTrackers[key].target;\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t\t\r\n\t\t\t\tthis.pseudoTrackers[key].target = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\t\t\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\t\t\t\t\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this))\r\n\t}\r\n\t\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\t\t\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\r\n\t\t\tthis.bindPseudoEvents();\r\n\t\t}\r\n\t\t\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\t\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\t\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t\t\r\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\r\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\t\t\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\t\t\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\t\t\t\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\t\t\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\t\t\t\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\r\n\t\t\t\t\t\t\ttargets[key] = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tif(targets[\"row\"] instanceof Row){\r\n\t\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t\t}else{\t\r\n\t\t\t\t\t\t\tif(targets[\"row\"]){\r\n\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?\")\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.previousTargets = targetMatches;\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\t\t\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearWatchers(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.handler){\r\n\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\tlistener.handler = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFunctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, hanlder)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name]){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\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?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\r\n\t\tthis.msgElement = this.createMsgElement(); //message element\r\n\t\tthis.loadingElement = null;\r\n\t\tthis.errorElement = null;\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar template;\r\n\r\n\t\tthis.loaderElement.appendChild(this.msgElement);\r\n\r\n\t\tif(this.table.options.dataLoaderLoading){\r\n\t\t\tif(typeof this.table.options.dataLoaderLoading == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderLoading.trim();\r\n\t\t\t\tthis.loadingElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.loadingElement = this.table.options.dataLoaderLoading;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataLoaderError){\r\n\t\t\tif(typeof this.table.options.dataLoaderError == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderError.trim();\r\n\t\t\t\tthis.errorElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.errorElement = this.table.options.dataLoaderError;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcreateLoaderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-loader\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateMsgElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-loader-msg\");\r\n\t\tel.setAttribute(\"role\", \"alert\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.showLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\r\n\t\t\t\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.hideLoader();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\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\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.hideLoader();\r\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\tshowLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.hideLoader();\r\n\r\n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\r\n\t\t\tthis.msgElement.classList.remove(\"tabulator-error\");\r\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\r\n\r\n\t\t\tif(this.loadingElement){\r\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\r\n\t\t\t}else{\r\n\t\t\t\tthis.msgElement.innerHTML = this.langText(\"data|loading\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n\r\n\tshowError(){\r\n\t\tthis.hideLoader();\r\n\r\n\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\t\tthis.msgElement.classList.remove(\"tabulator-loading\");\r\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\r\n\r\n\t\tif(this.errorElement){\r\n\t\t\tthis.msgElement.appendChild(this.errorElement);\r\n\t\t}else{\r\n\t\t\tthis.msgElement.innerHTML = this.langText(\"data|error\");\r\n\t\t}\r\n\r\n\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t}\r\n\r\n\r\n\thideLoader(){\r\n\t\tif(this.loaderElement.parentNode){\r\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(table, optionsList, debug){\r\n\t\tthis.table = table;\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this.table, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","import CoreFeature from './CoreFeature.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registation ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = func;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Module;","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tthis.dispatch(\"layout-refreshing\")\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t\t\"counter\":{\r\n\t\t\t\t\"showing\": \"Showing\",\r\n\t\t\t\t\"of\": \"of\",\r\n\t\t\t\t\"rows\": \"rows\",\r\n\t\t\t\t\"pages\": \"pages\",\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\r\n\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tvar orderedMods = [],\r\n\t\t\tunOrderedMods = [];\r\n\r\n\t\t\tthis.modules = {};\r\n\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\t\t\t\tlet module = new mod(this);\r\n\r\n\t\t\t\tthis.modules[name] = module;\r\n\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore.push(module);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(mod.moduleInitOrder){\r\n\t\t\t\t\t\torderedMods.push(module);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tunOrderedMods.push(module);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\torderedMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\r\n\t\t\tthis.modulesRegular = orderedMods.concat(unOrderedMods);\r\n\t\t}\r\n\t}\r\n\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nclass Tabulator {\r\n\r\n\tconstructor(element, options){\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\r\n\r\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\r\n\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tif(this.initializeElement(element)){\r\n\r\n\t\t\tthis.initializeCoreSystems(options);\r\n\r\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tTableRegistry.register(this); //register table for inter-device communication\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\r\n\t\tthis.bindModules();\r\n\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\r\n\t\tthis._clearObjectPointers();\r\n\r\n\t\tthis._mapDeprecatedFunctionality();\r\n\r\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\r\n\t\tthis.dataLoader.initialize();\r\n\t\t// this.columnManager.initialize();\r\n\t\t// this.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\r\n\t//convert deprecated functionality to new functions\r\n\t_mapDeprecatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t_clearSelection(){\r\n\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tif (window.getSelection) {\r\n\t\t if (window.getSelection().empty) { // Chrome\r\n\t\t \twindow.getSelection().empty();\r\n\t\t } else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t \twindow.getSelection().removeAllRanges();\r\n\t\t }\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\r\n\t//create table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\r\n\t\tthis._rtlCheck();\r\n\r\n\t\tthis._buildElement();\r\n\r\n\t\tthis._initializeTable();\r\n\r\n\t\tthis._loadInitialData();\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_rtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\r\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options,\r\n\t\tnewElement;\r\n\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\r\n\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\r\n\t\tthis.interactionMonitor.initialize();\r\n\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\r\n\t\tthis._detectBrowser();\r\n\r\n\t\t//initialize core modules\r\n\t\tthis.modulesCore.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t})\r\n\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\r\n\t\tif(options.autoColumns && options.data){\r\n\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\r\n\t\t//initialize regular modules\r\n\t\tthis.modulesRegular.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t});\r\n\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t}\r\n\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\r\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\r\n\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\r\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));\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"replaceData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"updateData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\taddData(data, pos, index){\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t\t.then((rows) => {\r\n\t\t\t\t\t\tvar output = [];\r\n\r\n\t\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tresolve(output);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"addData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"updateOrAddData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tif(this.initialized){\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"addRow failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn Promise.resolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\r\n\t}\r\n\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.columnManager.setColumns(definition);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\r\n\tgetColumn(field){\r\n\t\tvar col = this.columnManager.findColumn(field);\r\n\r\n\t\tif(col){\r\n\t\t\treturn col.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from);\r\n\t\tvar toColumn = this.columnManager.findColumn(to);\r\n\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.columnManager.redraw(force);\r\n\t\t\tthis.rowManager.redraw(force);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"redraw failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\r\n\t//////////////////// Event Bus ///////////////////\r\n\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;\r\n","export default {}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {\r\n\tmethod: \"GET\",\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nexport default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\r\n\t\t\tvar output = generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.config = {}; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\t\t\r\n\t\tthis.loaderPromise = false;\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\t\t\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\t\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\t\t\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\r\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\t\r\n\trequestParams(data, config, silent, params){\r\n\t\tvar ajaxParams = this.table.options.ajaxParams;\r\n\t\t\r\n\t\tif(ajaxParams){\r\n\t\t\tif(typeof ajaxParams === \"function\"){\r\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tparams = Object.assign(params, ajaxParams);\r\n\t\t}\t\t\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\t\r\n\trequestData(url, params, config, silent, previousData){\r\n\t\tvar ajaxConfig;\r\n\t\t\r\n\t\tif(!previousData && this.requestDataCheck(url)){\r\n\t\t\tif(url){\r\n\t\t\t\tthis.setUrl(url);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tajaxConfig = this.generateConfig(config);\r\n\t\t\t\r\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetDefaultConfig(config = {}){\r\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(this.config, config);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//load config object\r\n\tgenerateConfig(config = {}){\r\n\t\tvar ajaxConfig = Object.assign({}, this.config)\r\n\t\t\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tajaxConfig.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(ajaxConfig, config);\r\n\t\t}\r\n\t\t\r\n\t\treturn ajaxConfig;\r\n\t}\r\n\t\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\t\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\t\r\n\t//send ajax request\r\n\tsendRequest(url, params, config){\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\r\n\t\t\treturn this.loaderPromise(url, config, params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tif(this.topRow){\r\n\t\t\trows.unshift(this.topRow);\r\n\t\t}\r\n\r\n\t\tif(this.botRow){\r\n\t\t\trows.push(this.botRow);\r\n\t\t}\r\n\t\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRowsRefresh(){\r\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\r\n\t\t\tthis.recalcAll();\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.table.footerManager.remove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.table.footerManager.prepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(row);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeElementField(){\r\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\r\n\r\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\t}\r\n\t\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tvar field = cell.column.getField();\r\n\r\n\t\tif(field === this.elementField){\r\n\t\t\tthis.layoutRow(cell.row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowExpanded(row){\r\n\t\treturn row.modules.dataTree.open;\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\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 }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\r\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}});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","export default function (list, options, setFileContents) {\r\n\tconst fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tconst item = {};\r\n\r\n\t\tswitch (row.type) {\r\n\t\t\tcase \"header\":\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\t\tif (col) {\r\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tfileContents.push(JSON.stringify(item));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\r\n};","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\nimport jsonLines from './downloaders/jsonLines.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tjsonLines:jsonLines,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\n\r\n//dropdown select editor\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : []),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tmultiselect = editorParams.multiselect,\r\n\tdataItems = [],\r\n\tcurrentItem = {},\r\n\tdisplayItems = [],\r\n\tcurrentItems = [],\r\n\tblurable = true,\r\n\tblockListShow = false,\r\n\tsearchWord = \"\",\r\n\tsearchWordTimeout = null;\r\n\r\n\tif(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === \"object\" && !editorParams.values)){\r\n\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\r\n\t\teditorParams = {values:editorParams};\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\r\n\t\t}\r\n\r\n\t\treturn Object.keys(output);\r\n\t}\r\n\r\n\tfunction parseItems(inputValues, curentValues){\r\n\t\tvar dataList = [];\r\n\t\tvar displayList = [];\r\n\r\n\t\tfunction processComplexListItem(item){\r\n\t\t\tvar item = {\r\n\t\t\t\tlabel:item.label,\r\n\t\t\t\tvalue:item.value,\r\n\t\t\t\titemParams:item.itemParams,\r\n\t\t\t\telementAttributes: item.elementAttributes,\r\n\t\t\t\telement:false,\r\n\t\t\t};\r\n\r\n\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t// }\r\n\r\n\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\tsetItem(item);\r\n\t\t\t}\r\n\r\n\t\t\tdataList.push(item);\r\n\t\t\tdisplayList.push(item);\r\n\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif(typeof inputValues == \"function\"){\r\n\t\t\tinputValues = inputValues(cell);\r\n\t\t}\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\r\n\t\t\t\t\tif(value.options){\r\n\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\tlabel:value.label,\r\n\t\t\t\t\t\t\tgroup:true,\r\n\t\t\t\t\t\t\titemParams:value.itemParams,\r\n\t\t\t\t\t\t\telementAttributes:value.elementAttributes,\r\n\t\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdisplayList.push(item);\r\n\r\n\t\t\t\t\t\tvalue.options.forEach(function(item){\r\n\t\t\t\t\t\t\tprocessComplexListItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tprocessComplexListItem(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\titem = {\r\n\t\t\t\t\t\tlabel:value,\r\n\t\t\t\t\t\tvalue:value,\r\n\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\t\tsetItem(item);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataList.push(item);\r\n\t\t\t\t\tdisplayList.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tlabel:inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t\telement:false,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\tsetItem(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataList.push(item);\r\n\t\t\t\tdisplayList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(editorParams.sortValuesList){\r\n\t\t\tdataList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tdisplayList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList !== \"asc\"){\r\n\t\t\t\tdataList.reverse();\r\n\t\t\t\tdisplayList.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataItems = dataList;\r\n\t\tdisplayItems = displayList;\r\n\r\n\t\tfillList();\r\n\t}\r\n\r\n\tfunction fillList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\r\n\t\t\t\tif(item.group){\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\r\n\t\t\t\t\tel.addEventListener(\"click\", function(){\r\n\t\t\t\t\t\tblockListShow = true;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tblockListShow = false;\r\n\t\t\t\t\t\t}, 10);\r\n\r\n\t\t\t\t\t\t// setCurrentItem(item);\r\n\t\t\t\t\t\t// chooseItem();\r\n\t\t\t\t\t\tif(multiselect){\r\n\t\t\t\t\t\t\ttoggleItem(item);\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tchooseItem(item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// if(item === currentItem){\r\n\t\t\t\t\t// \tel.classList.add(\"active\");\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(currentItems.indexOf(item) > -1){\r\n\t\t\t\t\t\tel.classList.add(\"active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n\t\t\t\t\tfor (let key in item.elementAttributes){\r\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\t\t\t\tkey = key.slice(1);\r\n\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction setCurrentItem(item, active){\r\n\r\n\t\tif(!multiselect && currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"focused\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item.element){\r\n\t\t\titem.element.classList.add(\"focused\");\r\n\t\t\tif(active){\r\n\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// function chooseItem(){\r\n\t// \thideList();\r\n\r\n\t// \tif(initialValue !== currentItem.value){\r\n\t// \t\tinitialValue = currentItem.value;\r\n\t// \t\tsuccess(currentItem.value);\r\n\t// \t}else{\r\n\t// \t\tcancel();\r\n\t// \t}\r\n\t// }\r\n\r\n\tfunction setItem(item) {\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index == -1){\r\n\t\t\tcurrentItems.push(item);\r\n\t\t\tsetCurrentItem(item, true);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\t}\r\n\r\n\tfunction unsetItem(index) {\r\n\t\tvar item = currentItems[index];\r\n\r\n\t\tif(index > -1){\r\n\t\t\tcurrentItems.splice(index, 1);\r\n\t\t\tif(item.element){\r\n\t\t\t\titem.element.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleItem(item) {\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tunsetItem(index);\r\n\t\t}else{\r\n\t\t\tif(multiselect !== true && currentItems.length >= multiselect){\r\n\t\t\t\tunsetItem(0);\r\n\t\t\t}\r\n\r\n\t\t\tsetItem(item);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\r\n\t}\r\n\r\n\tfunction chooseItem(item){\r\n\t\thideList();\r\n\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tif(item){\r\n\t\t\tinput.value = item.label;\r\n\t\t\tsuccess(item.value);\r\n\t\t}\r\n\r\n\t\tinitialDisplayValue = [item.value];\r\n\t}\r\n\r\n\r\n\tfunction chooseItems(silent){\r\n\t\tif(!silent){\r\n\t\t\thideList();\r\n\t\t}\r\n\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.value);\r\n\t\t});\r\n\r\n\t\tinitialDisplayValue = output;\r\n\r\n\t\tsuccess(output);\r\n\t}\r\n\r\n\tfunction fillInput(){\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.label);\r\n\t\t});\r\n\r\n\t\tinput.value = output.join(\", \");\r\n\r\n\t\tif(self.currentCell === false){\r\n\t\t\tchooseItems(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction unsetItems() {\r\n\r\n\t\tvar len = currentItems.length;\r\n\r\n\t\tfor(let i = 0; i < len; i++){\r\n\t\t\tunsetItem(0);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tcurrentItems = [];\r\n\r\n\t\tif(!listEl.parentNode){\r\n\t\t\tif(editorParams.values === true){\r\n\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\r\n\t\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\r\n\t\t\t}else{\r\n\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\r\n\r\n\t\t\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tblurable = false;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tblurable = true;\r\n\t\t\t\t}, 10);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\tfunction scrollTovalue(char){\r\n\r\n\t\tclearTimeout(searchWordTimeout);\r\n\r\n\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\r\n\t\tsearchWord += character.toLowerCase();\r\n\r\n\t\tvar match = dataItems.find((item) => {\r\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tsetCurrentItem(match, !multiselect);\r\n\t\t}\r\n\r\n\t\tsearchWordTimeout = setTimeout(() => {\r\n\t\t\tsearchWord = \"\";\r\n\t\t}, 800)\r\n\t}\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\tinput.style.cursor = \"default\";\r\n\tinput.readOnly = (this.currentCell != false);\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\r\n\r\n\t// if(editorParams.values === true){\r\n\t// \tparseItems(getUniqueColumnValues(), initialValue);\r\n\t// }else if(typeof editorParams.values === \"string\"){\r\n\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\r\n\t// }else{\r\n\t// \tparseItems(editorParams.values || [], initialValue);\r\n\t// }\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tif(!input.value){\r\n\t\t\tunsetItems();\r\n\t\t\tchooseItems();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < dataItems.length - 1)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < dataItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\t// chooseItem();\r\n\r\n\t\t\tif(multiselect){\r\n\t\t\t\ttoggleItem();\r\n\t\t\t}else{\r\n\t\t\t\tchooseItem();\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(self.currentCell === false){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\r\n\t\t\t\tscrollTovalue(e.keyCode);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tchooseItems();\r\n\t\t\t}else{\r\n\t\t\t\tcancelItem();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tif(!blockListShow){\r\n\t\t\tshowList();\r\n\t\t}\r\n\t});\r\n\r\n\t//style list element\r\n\tlistEl = document.createElement(\"div\");\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\nimport maskInput from '../../inputMask.js';\r\n\r\n//autocomplete\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\"),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tallItems = [],\r\n\tdisplayItems = [],\r\n\tvalues = [],\r\n\tcurrentItem = false,\r\n\tblurable = true,\r\n\tuniqueColumnValues = false;\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"search\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style list element\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\tblurable = false;\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tblurable = true;\r\n\t\t}, 10);\r\n\t});\r\n\r\n\r\n\tfunction genUniqueColumnValues(){\r\n\t\tif(editorParams.values === true){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues();\r\n\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList){\r\n\t\t\t\tif(editorParams.sortValuesList == \"asc\"){\r\n\t\t\t\t\toutput = Object.keys(output).sort();\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput = Object.keys(output).sort().reverse();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\toutput = Object.keys(output);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\r\n\t\t}\r\n\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfunction filterList(term, intialLoad){\r\n\t\tvar matches = [],\r\n\t\tvalues, items, searchEl;\r\n\r\n\t\t//lookup base values list\r\n\t\tif(uniqueColumnValues){\r\n\t\t\tvalues = uniqueColumnValues;\r\n\t\t}else{\r\n\t\t\tvalues = editorParams.values || [];\r\n\t\t}\r\n\r\n\t\tif(editorParams.searchFunc){\r\n\t\t\tmatches = editorParams.searchFunc(term, values);\r\n\r\n\t\t\tif(matches instanceof Promise){\r\n\r\n\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\r\n\r\n\t\t\t\tmatches.then((result) => {\r\n\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\titems = parseItems(values);\r\n\r\n\t\t\tif(term === \"\"){\r\n\t\t\t\tif(editorParams.showListOnEmpty){\r\n\t\t\t\t\tmatches = items;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\titems.forEach(function(item){\r\n\t\t\t\t\tif(item.value !== null || typeof item.value !== \"undefined\"){\r\n\t\t\t\t\t\tif(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){\r\n\t\t\t\t\t\t\tmatches.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfillListIfNotEmpty(matches, intialLoad);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addNotice(notice){\r\n\t\tvar searchEl = document.createElement(\"div\");\r\n\r\n\t\tclearList();\r\n\r\n\t\tif(notice !== false){\r\n\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\r\n\t\t\tsearchEl.tabIndex = 0;\r\n\r\n\t\t\tif(notice instanceof Node){\r\n\t\t\t\tsearchEl.appendChild(notice);\r\n\t\t\t}else{\r\n\t\t\t\tsearchEl.innerHTML = notice;\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(searchEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parseItems(inputValues){\r\n\t\tvar itemList = [];\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\r\n\t\t\t\tvar item = {};\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\r\n\t\t\t\t\titem.value = value.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\r\n\t\t\t\t\titem.value = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttitle:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tfunction clearList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\t}\r\n\r\n\tfunction fillListIfNotEmpty(items, intialLoad){\r\n\t\tif(items.length){\r\n\t\t\tfillList(items, intialLoad);\r\n\t\t}else{\r\n\t\t\tif(editorParams.emptyPlaceholder){\r\n\t\t\t\taddNotice(editorParams.emptyPlaceholder);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillList(items, intialLoad){\r\n\t\tvar current = false;\r\n\r\n\t\tclearList();\r\n\r\n\t\tdisplayItems = items;\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\tel.innerHTML = item.title;\r\n\r\n\t\t\t\tel.addEventListener(\"click\", function(e){\r\n\t\t\t\t\tsetCurrentItem(item);\r\n\t\t\t\t\tchooseItem();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\t\t\t\tif(intialLoad && item.value == initialValue){\r\n\t\t\t\t\tinput.value = item.title;\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item === currentItem){\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\r\n\t\tif(!current){\r\n\t\t\tsetCurrentItem(false);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction chooseItem(){\r\n\t\thideList();\r\n\r\n\t\tif(currentItem){\r\n\t\t\tif(initialValue !== currentItem.value){\r\n\t\t\t\tinitialValue = currentItem.value;\r\n\t\t\t\tinput.value = currentItem.title;\r\n\t\t\t\tsuccess(currentItem.value);\r\n\t\t\t}else{\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(editorParams.freetext){\r\n\t\t\t\tinitialValue = input.value;\r\n\t\t\t\tsuccess(input.value);\r\n\t\t\t}else{\r\n\t\t\t\tif(editorParams.allowEmpty && input.value === \"\"){\r\n\t\t\t\t\tinitialValue = input.value;\r\n\t\t\t\t\tsuccess(input.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tif(!listEl.parentNode){\r\n\t\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentItem(item, showInputValue){\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item && item.element){\r\n\t\t\titem.element.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsetCurrentItem(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < displayItems.length - 1)){\r\n\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < displayItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\t// e.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tchooseItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 36: //home\r\n\t\t\tcase 35: //end\r\n\t\t\t//prevent table navigation while using input element\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"keyup\", function(e){\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //up arrow\r\n\t\t\tcase 40: //right arrow\r\n\t\t\tcase 13: //enter\r\n\t\t\tcase 27: //escape\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tfilterList(input.value);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tfilterList(input.value);\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tchooseItem();\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tvar value = initialDisplayValue;\r\n\t\tgenUniqueColumnValues();\r\n\t\tshowList();\r\n\t\tinput.value = value;\r\n\t\tfilterList(value, true);\r\n\t});\r\n\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\tgenUniqueColumnValues();\r\n\tinput.value = initialDisplayValue;\r\n\tfilterList(initialDisplayValue, true);\r\n\r\n\treturn input;\r\n};","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false;\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn input.checked;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(cell, e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.table.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(cell = this.currentCell, e){\r\n\t\tvar nextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(cell = this.currentCell, e){\r\n\t\tvar nextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tif(cancel){\r\n\t\t\t\tif(cell.column.modules.validate && this.table.modExists(\"validate\")){\r\n\t\t\t\t\tthis.table.modules.validate.cellValidate(cell);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = true;\r\n\r\n\t\t\t\tif(cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\"){\r\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\tif(valid !== true){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tif(cell.modules.validate){\r\n\t\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;\r\n","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\r\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\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\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\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\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\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\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.styleCells[index] || styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.styleCells[index] || styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\t\tthis.tableInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.tableInitialized = true;\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\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);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft + parseInt(this.table.columnManager.element.style.marginLeft);\r\n\r\n\t\t\t\t\tif(left !== headerPos){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.headerElement.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.tableInitialized){\r\n\t\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\t\tthis.reloadData();\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters());\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tsign = \"\",\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tif(floatVal < 0){\r\n\t\tfloatVal = Math.abs(floatVal);\r\n\t\tsign = negativeSign;\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\twhile (rgx.test(integer)){\r\n\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t}\r\n\r\n\treturn after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = data[formatterParams.labelField];\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = inputFormat === \"iso\" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat);\r\n\r\n\t\tif(newDatetime.isValid){\r\n\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.shiftTimezone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\r\n\t\t\tif(invalid === true || !value){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\t\r\n\t\tvar newDatetime = inputFormat === \"iso\" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat);\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\t// return moment.duration(newDatetime.diff(date)).humanize(suffix);\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1 || \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\tvar blocked = false;\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\r\n\t\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\t\tif(!blocked){\r\n\t\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tblocked = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\tblocked = true;\r\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\t\tthis.blocked = true;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\t\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\r\n\t}\r\n\t\r\n\tblockLayout(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\t\r\n\tunblockLayout(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n\t\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\t\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\t\t\r\n\t\tif(!column.isGroup){\r\n\t\t\t\r\n\t\t\tif(this.frozenCheck(column)){\r\n\t\t\t\t\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\t\t\t\t\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.active = true;\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfrozenCheck(column){\r\n\t\tvar frozen = false;\r\n\t\t\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\t\t\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\t\t\r\n\t\treturn frozen;\r\n\t}\r\n\t\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\t\t\t\r\n\t\t\tthis.calcMargins(true);\r\n\t\t\t\r\n\t\t\tthis.layoutColumnPosition();\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t//calculate margins for rows\r\n\tcalcMargins(scroll){\r\n\t\t\r\n\t\tif(!scroll){\r\n\t\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\t\t\t\r\n\t\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\t\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\t\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\t\tvar leftParents = [];\r\n\t\t\r\n\t\tvar leftMargin = 0;\r\n\t\tvar rightMargin = 0;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\t\r\n\t\t\tcolumn.modules.frozen.margin = (leftMargin + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tleftMargin += column.getWidth();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\trightMargin += column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - rightMargin) + \"px\";\r\n\t\t\t\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\t\r\n\t//layout columns appropriately\r\n\tlayout(){\r\n\t\tif(this.active && !this.blocked){\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\t\t\r\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\r\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\r\n\t\t}\r\n\t\t\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tlayoutElement(element, column){\r\n\t\t\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\t\t\t\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\t\t\t\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\t\t\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trows.push(row);\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\t\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.element = false;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\t\t\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\t\t\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\tif(row.modules){\r\n\t\t\t\t\tdelete row.modules.group;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.arrowElement = false;\r\n\t\tthis.elementContents = false;\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\t\t\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\taddBindings(){\r\n\t\tvar toggleElement;\r\n\t\t\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\t\t\t\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\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);\r\n\t\t\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\t\r\n\t_addRowToGroup(row){\r\n\t\t\r\n\t\tvar level = this.level + 1;\r\n\t\t\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\t\t\t\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\t\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\t\t\r\n\t\trow.updateData(data);\r\n\t\t\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\t\t\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\trow.modules.group = this;\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\t\r\n\tscrollHeader(left){\r\n\t\tif(this.arrowElement){\r\n\t\t\tthis.arrowElement.style.marginLeft = left;\r\n\t\t\t\r\n\t\t\tthis.groupList.forEach(function(child){\r\n\t\t\t\tchild.scrollHeader(left);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowIndex(row){}\r\n\t\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\t\t\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\t\t\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\t\t\t\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\t\t\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\t\t\t\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\toutput.push(this);\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\t\t\t\t\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\t\t\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\t\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\t\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\t\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tvar prev = this.generateElement();\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\t\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tif(typeof this.visible == \"function\"){\r\n\t\t\t\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\t\t\t\t\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\t\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\t\r\n\t////////////// Standard Row Functions //////////////\r\n\t\r\n\tgetElement(){\r\n\t\treturn this.elementContents ? this.element : this.generateElement();\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.addBindings = false;\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\t\t\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\t// this.addBindings();\r\n\t\t\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\t\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\t\t\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\t\r\n\treinitializeHeight(){}\r\n\t\r\n\tcalcHeight(){}\r\n\t\r\n\tsetCellHeight(){}\r\n\t\r\n\tclearCellHeight(){}\r\n\t\r\n\tdeinitializeHeight(){}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureGroupSetup(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.initialize();\r\n\t\t}else{\r\n\t\t\tthis.configureGroupSetup();\r\n\t\t}\r\n\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.configureGroupSetup();\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\r\n\r\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList = [];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Row from '../../core/row/Row.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","import Module from '../../core/Module.js';\r\nimport Column from '../../core/column/Column.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\r\n\t\t\tthis.parseTable();\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.originalElement,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for Tabulator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for Tabulator inline options\r\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","function csvImporter(input){\r\n var data = [],\r\n row = 0, \r\n col = 0,\r\n inQuote = false;\r\n \r\n //Iterate over each character\r\n for (let index = 0; index < input.length; index++) {\r\n let char = input[index], \r\n nextChar = input[index+1]; \r\n \r\n //Initialize empty row\r\n if(!data[row]){\r\n data[row] = [];\r\n }\r\n\r\n //Initialize empty column\r\n if(!data[row][col]){\r\n data[row][col] = \"\";\r\n }\r\n \r\n //Handle quotation mark inside string\r\n if (char == '\"' && inQuote && nextChar == '\"') { \r\n data[row][col] += char; \r\n index++;\r\n continue; \r\n }\r\n \r\n //Begin / End Quote\r\n if (char == '\"') { \r\n inQuote = !inQuote;\r\n continue;\r\n }\r\n \r\n //Next column (if not in quote)\r\n if (char == ',' && !inQuote) { \r\n col++;\r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CRLF) \r\n if (char == '\\r' && nextChar == '\\n' && !inQuote) { \r\n col = 0; \r\n row++; \r\n index++; \r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CR or LF) \r\n if ((char == '\\r' || char == '\\n') && !inQuote) { \r\n col = 0;\r\n row++;\r\n continue; \r\n }\r\n\r\n //Normal Character, append to column\r\n data[row][col] += char;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport default csvImporter;","export default function(input){\r\n try {\r\n return JSON.parse(input);\r\n } catch(e) {\r\n console.warn(\"JSON Import Error - File contents is invalid JSON\", e);\r\n return Promise.reject();\r\n }\r\n}","import csv from './importers/csv.js';\r\nimport json from './importers/json.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultImporters from './defaults/importers.js';\r\n\r\nclass Import extends Module{\r\n \r\n constructor(table){\r\n super(table);\r\n \r\n this.registerTableOption(\"importFormat\");\r\n this.registerTableOption(\"importReader\", \"text\");\r\n }\r\n \r\n initialize(){\r\n this.registerTableFunction(\"import\", this.importFromFile.bind(this));\r\n\r\n if(this.table.options.importFormat){\r\n this.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\r\n this.subscribe(\"data-load\", this.loadData.bind(this), 10);\r\n }\r\n }\r\n\r\n loadDataCheck(data){\r\n return typeof data === \"string\";\r\n }\r\n\r\n loadData(data, params, config, silent, previousData){\r\n return this.importData(this.lookupImporter(), data)\r\n .then(this.structureData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import data\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n\r\n lookupImporter(importFormat){\r\n var importer;\r\n \r\n if(!importFormat){\r\n importFormat = this.table.options.importFormat;\r\n }\r\n \r\n if(typeof importFormat === \"string\"){\r\n importer = Import.importers[importFormat];\r\n }else{\r\n importer = importFormat;\r\n }\r\n\r\n if(!importer){\r\n console.error(\"Import Error - Importer not found:\", importFormat);\r\n }\r\n \r\n return importer;\r\n }\r\n \r\n importFromFile(importFormat, extension){\r\n var importer = this.lookupImporter(importFormat);\r\n \r\n if(importer){\r\n return this.pickFile(extension)\r\n .then(this.importData.bind(this, importer))\r\n .then(this.structureData.bind(this))\r\n .then(this.setData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import file\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n }\r\n \r\n pickFile(extensions){\r\n return new Promise((resolve, reject) => {\r\n var input = document.createElement(\"input\");\r\n input.type = \"file\";\r\n input.accept = extensions;\r\n \r\n input.addEventListener(\"change\", (e) => {\r\n var file = input.files[0],\r\n reader = new FileReader(),\r\n data;\r\n \r\n switch(this.table.options.importReader){\r\n case \"buffer\":\r\n reader.readAsArrayBuffer(file);\r\n break;\r\n\r\n case \"binary\":\r\n reader.readAsBinaryString(file);\r\n break;\r\n\r\n case \"url\":\r\n reader.readAsDataURL(file);\r\n break;\r\n\r\n case \"text\":\r\n default:\r\n reader.readAsText(file);\r\n }\r\n \r\n reader.onload = (e) => {\r\n resolve(reader.result)\r\n };\r\n \r\n reader.onerror = (e) => {\r\n console.warn(\"File Load Error - Unable to read file\");\r\n reject();\r\n };\r\n });\r\n \r\n input.click();\r\n });\r\n }\r\n \r\n importData(importer, fileContents){\r\n var data = importer.call(this.table, fileContents);\r\n \r\n if(data instanceof Promise){\r\n return data;\r\n }else{\r\n return data ? Promise.resolve(data) : Promise.reject();\r\n }\r\n }\r\n\r\n structureData(parsedData){\r\n var data = [];\r\n \r\n if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\r\n if(this.table.options.autoColumns){\r\n data = this.structureArrayToObject(parsedData);\r\n }else{\r\n data = this.structureArrayToColumns(parsedData);\r\n }\r\n\r\n return data;\r\n }else{\r\n return parsedData;\r\n }\r\n }\r\n\r\n structureArrayToObject(parsedData){\r\n var columns = parsedData.shift();\r\n\r\n var data = parsedData.map((values) => {\r\n var row = {};\r\n\r\n columns.forEach((key, i) => {\r\n row[key] = values[i];\r\n })\r\n\r\n return row;\r\n })\r\n\r\n return data;\r\n }\r\n\r\n structureArrayToColumns(parsedData){\r\n var data = [],\r\n columns = this.table.getColumns();\r\n\r\n //remove first row if it is the column names\r\n if(columns[0] && parsedData[0][0]){\r\n if(columns[0].getDefinition().title === parsedData[0][0]){\r\n parsedData.shift();\r\n }\r\n }\r\n \r\n //convert row arrays to objects\r\n parsedData.forEach((rowData) => {\r\n var row = {};\r\n\r\n rowData.forEach((value, index) => {\r\n var column = columns[index];\r\n\r\n if(column){\r\n row[column.getField()] = value;\r\n }\r\n })\r\n\r\n data.push(row);\r\n });\r\n\r\n return data;\r\n }\r\n \r\n setData(data){\r\n return this.table.setData(data);\r\n }\r\n}\r\n\r\nImport.moduleName = \"import\";\r\n\r\n//load defaults\r\nImport.importers = defaultImporters;\r\n\r\nexport default Import;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tgroup:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\r\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\r\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 89\"],\r\n};","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings)\r\n\t\t\tObject.assign(mergedBindings, bindings)\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tbindingList.forEach((item) => {\r\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\r\n\t\t\t\t\t\t});\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Menu extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.menuContainer = null;\r\n\t\tthis.menuElements = [];\r\n\t\tthis.blurEvent = this.hideMenu.bind(this);\r\n\t\tthis.escEvent = this.escMenu.bind(this);\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\tthis.positionReversedX = false;\r\n\t\t\r\n\t\tthis.currentComponent = null;\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\t\tthis.registerTableOption(\"menuContainer\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerClickMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.lookupMenuContainer();\r\n\t\t\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tlookupMenuContainer(){\r\n\t\t\r\n\t\tthis.menuContainer = this.table.options.menuContainer;\r\n\t\t\r\n\t\tif(typeof this.menuContainer === \"string\"){\r\n\t\t\tthis.menuContainer = document.querySelector(this.menuContainer);\r\n\t\t\t\r\n\t\t\tif(!this.menuContainer){\r\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.menuContainer , \"(defaulting to document body)\");\r\n\t\t\t}\r\n\t\t}else if (this.menuContainer === true){\r\n\t\t\tthis.menuContainer = this.table.element;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.menuContainer && !this.checkMenuContainerIsParent(this.menuContainer)){\r\n\t\t\tthis.menuContainer = false;\r\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.menuContainer , \"(defaulting to document body)\");\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.menuContainer){\r\n\t\t\tthis.menuContainer = document.body;\r\n\t\t}\r\n\t}\r\n\t\r\n\tcheckMenuContainerIsParent(container, element = this.table.element){\r\n\t\tif(container === element){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\treturn element.parentNode ? this.checkMenuContainerIsParent(container, element.parentNode) : false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextMenu\", \"headerClickMenu\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\r\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\r\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerMenu){\r\n\t\t\tthis.initializeColumnHeaderMenu(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\r\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\r\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderMenu(column){\r\n\t\tvar headerMenuEl;\r\n\t\t\r\n\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\r\n\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\t\t\r\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadMenuTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuEvent(menu, e, component){\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\r\n\t\t\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\t\r\n\tloadMenu(e, component, menu, parentEl){\r\n\t\tvar touch = !(e instanceof MouseEvent);\r\n\t\t\r\n\t\tvar menuEl = document.createElement(\"div\");\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\t\t\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.isOpen()){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.hideMenu();\r\n\t\t\tthis.menuElements = [];\r\n\t\t}\r\n\t\t\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\t\t\t\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\t\t\t\t\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.hideOldSubMenus(menuEl);\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\t\t\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.hideMenu();\r\n\t\t});\r\n\t\t\r\n\t\tthis.menuElements.push(menuEl);\r\n\t\tthis.positionMenu(menuEl, parentEl, touch, e);\r\n\t\t\r\n\t\tthis.currentComponent = component\r\n\t\t\r\n\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent())\r\n\t}\r\n\t\r\n\thideOldSubMenus(menuEl){\r\n\t\tvar index = this.menuElements.indexOf(menuEl);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tfor(let i = this.menuElements.length - 1; i > index; i--){\r\n\t\t\t\tvar el = this.menuElements[i];\r\n\t\t\t\t\r\n\t\t\t\tif(el.parentNode){\r\n\t\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.menuElements.pop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tpositionMenu(element, parentEl, touch, e){\r\n\t\tvar x, y, parentOffset;\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tx = touch ? e.touches[0].pageX : e.pageX;\r\n\t\t\ty = touch ? e.touches[0].pageY : e.pageY;\r\n\t\t\t\r\n\t\t\tif(this.menuContainer !== document.body){\r\n\t\t\t\tparentOffset = Helpers.elOffset(this.menuContainer);\r\n\t\t\t\t\r\n\t\t\t\tx -= parentOffset.left;\r\n\t\t\t\ty -= parentOffset.top;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.positionReversedX = false;\r\n\t\t}else{\r\n\t\t\tparentOffset = Helpers.elOffset(parentEl);\r\n\t\t\tx = parentOffset.left + parentEl.offsetWidth;\r\n\t\t\ty = parentOffset.top - 1;\r\n\t\t}\r\n\t\t\r\n\t\telement.style.top = y + \"px\";\r\n\t\telement.style.left = x + \"px\";\r\n\t\t\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\r\n\t\t}, 100);\r\n\t\t\r\n\t\tthis.menuContainer.appendChild(element);\r\n\t\t\r\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\r\n\t\tif((x + element.offsetWidth) >= this.menuContainer.offsetWidth || this.positionReversedX){\r\n\t\t\telement.style.left = \"\";\r\n\t\t\t\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.right = (this.menuContainer.offsetWidth - parentOffset.left) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.right = (this.menuContainer.offsetWidth - x) + \"px\";\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.positionReversedX = true;\r\n\t\t}\r\n\t\t\r\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\r\n\t\tif((y + element.offsetHeight) > this.menuContainer.offsetHeight) {\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.top = (parseInt(element.style.top) - element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.top = (parseInt(element.style.top) - element.offsetHeight) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisOpen(){\r\n\t\treturn !!this.menuElements.length;\r\n\t}\r\n\t\r\n\tescMenu(e){\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tthis.hideMenu();\r\n\t\t}\r\n\t}\r\n\t\r\n\thideMenu(){\t\r\n\t\tthis.menuElements.forEach((menuEl) => {\r\n\t\t\tif(menuEl.parentNode){\r\n\t\t\t\tmenuEl.parentNode.removeChild(menuEl);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\r\n\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\r\n\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n\t\twindow.removeEventListener(\"resize\", this.blurEvent);\r\n\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n\t\t\r\n\t\tif(this.currentComponent){\r\n\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\r\n\t\t\tthis.currentComponent = null;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\t\t\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\t\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\t\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableColumns){\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\t\t\r\n\t\tif(!column.modules.frozen){\r\n\t\t\tcolEl = column.getElement();\r\n\t\t\t\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\t\t\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\t\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\t\t\t\t\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\t\t\t\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\t\t\t\t\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\t\t\t\t\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement(),\r\n\t\theaderElement = this.table.columnManager.getElement(),\r\n\t\theadersElement = this.table.columnManager.getHeadersElement();\r\n\t\t\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\t\t\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\t\t\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\t\t\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\t\t\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\t\t\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\r\n\t\t\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\t\t\t\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\t\t\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\t\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\t\t\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\t\t\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\t\t\t\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\t\t\t\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\t\t\t\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\t\t\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\t\t\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\tvar el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\r\n\tif(totalRows){\r\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\r\n\t\t\r\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\r\n\t\t\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(ofEl);\r\n\t\tel.appendChild(totalEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}else{\r\n\t\tvalueEl.innerHTML = \" 0 \";\r\n\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}\r\n\t\r\n\treturn el;\r\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\r\n var el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\t\r\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tel.appendChild(showingEl);\r\n\tel.appendChild(valueEl);\r\n\tel.appendChild(ofEl);\r\n\tel.appendChild(totalEl);\r\n\tel.appendChild(rowsEl);\r\n\t\r\n\treturn el;\r\n};","import rows from './pageCounters/rows.js';\r\nimport pages from './pageCounters/pages.js';\r\n\r\n\r\nexport default {\r\n\trows:rows,\r\n\tpages:pages,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPageCounters from './defaults/pageCounters.js';\r\n\r\nclass Page extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\t\t\r\n\t\tthis.element = null;\r\n\t\tthis.pageCounterElement = null;\r\n\t\tthis.pageCounter = null;\r\n\t\t\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.remoteRowCountEstimate = null;\r\n\t\t\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\t\t\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\t\t\r\n\t\tthis.pageSizes = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\r\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\t\t\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\t\t\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\r\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\t\t\t\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePageCounter();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn {index, top}\r\n\t}\r\n\t\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\t\t\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\t\t\t\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\t\t\t\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\t\t\t\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generatePageSizeSelectList();\r\n\t}\r\n\t\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\t\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\t\t\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn Promise.reject();\r\n\t}\r\n\t\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\t\t\t\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\t\t\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\t\t\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\t\t\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\t\t\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\t\t\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\t\t\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\t\t\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\t\t\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\t\t\t\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\t\t\t\t\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializePageCounter(){\r\n\t\tvar counter = this.table.options.paginationCounter,\r\n\t\tpageCounter = null;\r\n\t\t\r\n\t\tif(counter){\r\n\t\t\tif(typeof counter === \"function\"){\r\n\t\t\t\tpageCounter = counter;\r\n\t\t\t}else{\r\n\t\t\t\tpageCounter = Page.pageCounters[counter];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(pageCounter){\r\n\t\t\t\tthis.pageCounter = pageCounter;\r\n\t\t\t\t\r\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\r\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup pagination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel, paginationCounterHolder;\r\n\t\t\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\t\t\t\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\t\t\t\t\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\t\t\t\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tif(this.table.options.paginationCounter){\r\n\r\n\t\t\t\t\tpaginationCounterHolder \r\n\r\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\r\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\r\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\r\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(paginationCounterHolder){\r\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.footerManager.append(this.pageCounterElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.table.footerManager.append(this.element, this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\t\t}\r\n\t\t\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\t\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\t\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\t\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\t\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\t\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set the maximum page\r\n\tsetMaxPage(max){\r\n\t\t\r\n\t\tmax = parseInt(max);\r\n\t\t\r\n\t\tthis.max = max || 1;\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t\r\n\t\tpage = parseInt(page);\r\n\t\t\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\t\t\t\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\t\t\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\t\t\r\n\t\tthis.trackChanges();\r\n\t}\r\n\t\r\n\t_setPageCounter(totalRows, size, currentRow){\r\n\t\tvar content;\r\n\t\t\r\n\t\tif(this.pageCounter){\r\n\r\n\t\t\tif(this.mode === \"remote\"){\r\n\t\t\t\tsize = this.size;\r\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\r\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\r\n\t\t\t}\r\n\r\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\r\n\t\t\t\r\n\t\t\tswitch(typeof content){\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\tif(content instanceof Node){\r\n\t\t\t\t\t\r\n\t\t\t\t\t//clear previous cell contents\r\n\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageCounterElement.appendChild(content);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(content != null){\r\n\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);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"undefined\":\r\n\t\t\t\tcase \"null\":\r\n\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.pageCounterElement.innerHTML = content;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\t\t\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\t\t\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\t\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\t\t\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\t\t\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\t\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\t\t\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\t\t\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\t\t\r\n\t\treturn button;\r\n\t}\r\n\t\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger()\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\t\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\t\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\t\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\t\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar actualRowPageSize = 0,\r\n\t\toutput, start, end, actualStartRow;\r\n\r\n\t\tvar actualRows = data.filter((row) => {\r\n\t\t\treturn row.type === \"row\";\r\n\t\t});\r\n\t\t\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\t\t\t\r\n\t\t\tthis.setMaxRows(data.length);\r\n\t\t\t\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageButtons();\r\n\t\t\t\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tlet row = data[i];\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\toutput.push(row);\r\n\r\n\t\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\t\tif(!actualStartRow){\r\n\t\t\t\t\t\t\tactualStartRow = row;\r\n\t\t\t\t\t\t}\t\r\n\r\n\t\t\t\t\t\tactualRowPageSize++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\r\n\t\t\t\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\t\t\tthis._setPageCounter(actualRows.length);\r\n\t\t\t\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrigger(){\r\n\t\tvar left;\r\n\t\t\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\t\t\t\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\t\t\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\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));\r\n\t\t\t\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\t\t\t\t\t\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\treturn data.data;\r\n\t}\r\n\t\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.containerElement;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\t\t\t\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\n//load defaults\r\nPage.pageCounters = defaultPageCounters;\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.slice(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.slice(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};\r\n","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.options.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.options.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\nPersistence.moduleInitOrder = 1;\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar self = this,\r\n\t\tpushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn self.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\t// if(this.table.options.resizableColumns){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCellHandles.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.layoutColumnHeader.bind(this));\r\n\t\t// }\r\n\t}\r\n\t\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.initializeColumn(\"cell\", cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutColumnHeader(column){\r\n\t\tthis.initializeColumn(\"header\", column, column.element);\r\n\t}\r\n\t\r\n\tinitializeColumn(type, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable;\r\n\t\t\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tcolumn.modules.resize = {variableHeight:variableHeight};\r\n\t\t}\r\n\t\t\r\n\t\tif(mode === true || mode == type){\r\n\t\t\t\r\n\t\t\tvar handle = document.createElement('div');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tvar prevHandle = document.createElement('div');\r\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tvar nearestColumn = column.getLastColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn && self._checkResizability(nearestColumn)){\r\n\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//reszie column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar col = column.getLastColumn(),\r\n\t\t\t\toldWidth;\r\n\t\t\t\t\r\n\t\t\t\tif(col && self._checkResizability(col)){\r\n\t\t\t\t\toldWidth = col.getWidth();\r\n\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tcol.reinitializeWidth(true);\r\n\r\n\t\t\t\t\tif(oldWidth !== col.getWidth()){\r\n\t\t\t\t\t\tself.dispatch(\"column-resized\", col);\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", col.getComponent());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar prevHandleDown = function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\t\t\t\t\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\r\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//resize column on double click\r\n\t\t\tprevHandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\t\t\t\t\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\telement.appendChild(handle);\r\n\t\t\telement.appendChild(prevHandle);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\t\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\t\t\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\t// self.table.columnManager.tempScrollBlock();\r\n\t\t\t\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\t\t\t\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tfunction mouseUp(e){\r\n\t\t\t\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\t\t\t\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\t\t\t\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(self.startWidth !== column.getWidth()){\r\n\t\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\t\t\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\t\t\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.startWidth = column.getWidth();\r\n\t\t\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate responsive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//determine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\r\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort((a, b) => {\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initializeResponsivity();\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\t\t\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\t\t\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\r\n\t\t\t\r\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\t\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\t\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\t\t\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\t\t\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\t\t\t\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\t\t\r\n\t\trow.modules.select = {selected:false};\r\n\t\t\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\t\t\t\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\t\r\n\thandleComplexRowClick(row, e){\r\n\t\tif(e.shiftKey){\r\n\t\t\tthis.table._clearSelection();\r\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\r\n\t\t\t\r\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\r\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\r\n\t\t\t\r\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\r\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\t\t\t\r\n\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\r\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\r\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\r\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.lastClickedRow = row;\r\n\t\t\t}else{\r\n\t\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.selectable !== true){\r\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\r\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectRows(toggledRows);\r\n\t\t\t}\r\n\t\t\tthis.table._clearSelection();\r\n\t\t}\r\n\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\tthis.toggleRow(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}else{\r\n\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\tthis.selectRows(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\t\t\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"string\":\r\n\t\t\t\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\t\t\t\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\t\t\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\t\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\t\t\r\n\t\tif(typeof rows == \"undefined\"){\r\n\t\t\t\r\n\t\t\trowCount = self.selectedRows.length;\r\n\t\t\t\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(rowCount){\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\t\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tgetSelectedRows(){\r\n\t\t\r\n\t\tvar rows = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\t\t\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\t\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\t\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\t\t\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\ta = format === \"iso\" ? DT.fromISO(String(a)) : DT.fromFormat(String(a), format);\r\n\t\tb = format === \"iso\" ? DT.fromISO(String(b)) : DT.fromFormat(String(b), format);\r\n\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData(true);\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.invalidCells = [];\r\n\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? !cell.modules.validate.invalid : true;\r\n\t}\r\n\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trow = row.getComponent();\r\n\r\n\t\t\tvar valid = row.validate();\r\n\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\r\n\t\tif(column.definition.validator){\r\n\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t_buildValidator(type, params){\r\n\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tvalid = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach((item) => {\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tvalid.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalid = valid.length ? valid : true;\r\n\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\r\n\t\tif(valid === true){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = true;\r\n\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","//tabulator with all modules installed\r\nimport {default as Tabulator} from './Tabulator.js';\r\nimport * as modules from '../core/modules/optional.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nclass TabulatorFull extends Tabulator {};\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(TabulatorFull, modules);\r\n\r\nexport default TabulatorFull;"],"names":["debugEventsExternal","debugEventsInternal","debugInvalidOptions","height","minHeight","maxHeight","columnHeaderVertAlign","columns","columnDefaults","data","autoColumns","autoColumnsDefinitions","nestedFieldSeparator","tooltipGenerationMode","footerElement","index","textDirection","addRowPos","headerVisible","renderVertical","renderHorizontal","renderVerticalBuffer","scrollToRowPosition","scrollToRowIfVisible","scrollToColumnPosition","scrollToColumnIfVisible","rowFormatter","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","placeholder","dataLoader","dataLoaderLoading","dataLoaderError","dataLoaderErrorTimeout","dataSendParams","dataReceiveParams","CoreFeature","table","silent","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","options","value","module","ColumnComponent","column","_column","type","Proxy","get","target","name","receiver","componentFunctionBinder","handle","getElement","getDefinition","getField","getTitleDownload","cells","forEach","cell","push","getComponent","visible","isGroup","show","hide","output","length","parent","Column","columnManager","scrollToColumn","to","after","toColumn","findColumn","moveColumn","console","warn","nextCol","nextColumn","prevCol","prevColumn","updates","updateDefinition","getWidth","width","result","reinitializeWidth","setWidth","renderer","rerenderColumns","CellComponent","_cell","getValue","getOldValue","initialValue","row","getData","mutate","setValue","setValueActual","checkHeight","Cell","element","oldValue","minWidth","component","loaded","build","generateElement","_configureCell","getFieldValue","document","createElement","className","setAttribute","field","vertAligns","top","bottom","middle","hozAligns","left","right","center","style","textAlign","hozAlign","vertAlign","display","alignItems","justifyContent","definition","cssClass","classNames","split","classList","add","addEventListener","e","_generateTooltip","val","innerHTML","Node","firstChild","removeChild","appendChild","tooltip","containerOnly","layoutElement","changed","setValueProcessData","cellRendered","cellEdited","call","dispatchExternal","subscribedExternal","rowManager","setFieldValue","_generateContents","widthStyled","offsetWidth","minWidthStyled","maxWidth","maxWidthStyled","reinitializeHeight","heightStyled","offsetHeight","redrawBlock","parentNode","deleteCell","calcs","getCellIndex","def","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleDownload","titleFormatterRendered","mapDefinitions","setField","maxInitialWidth","widthFixed","i","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","bindModuleColumns","el","defaults","optionsList","generate","defaultOptionList","Object","keys","indexOf","title","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","headerTooltip","langBind","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","setTooltip","dblTap","tapHold","tap","headerClick","headerDblClick","headerContext","headerTap","passive","headerDblTap","clearTimeout","setTimeout","headerTapHold","classeNames","setMinWidth","parseInt","setMaxWidth","headerHozAlign","_buildColumnHeaderTitle","editableTitle","stopPropagation","focus","text","_formatColumnHeaderTitle","contents","dataObj","structure","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","paddingTop","verticalAlign","clearVerticalAlign","formatter","rowNumColumn","getFirstColumn","getLastColumn","getTopColumn","updateBranches","colDefs","responsiveToggle","verticalAlignHeaders","matchChildWidths","childWidth","child","splice","setWidthActual","isNaN","Math","floor","clientWidth","max","min","rows","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","ceil","getBoundingClientRect","Promise","resolve","reject","cellCount","deregisterColumn","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","force","fitToData","clearWidth","setTo","assign","addColumn","then","error","defaultOptions","Helpers","box","window","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","obj","clone","list","objectProto","__proto__","arrayProto","Array","isArray","subject","match","copy","findIndex","item","unshift","deepClone","OptionsList","msgType","registeredDefaults","option","userOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","tableElement","verticalFillMode","callback","update","blockRedraw","dir","includingBuffer","getDisplayRows","rowEl","remove","clearRows","clearColumns","renderRows","renderColumns","rerenderRows","position","ifVisible","rowIndex","offset","elVisible","elOffset","scrollToRowNearestTop","scrollToRow","scrollHeight","scrollTop","offsetTop","BaiscHorizontal","VirtualDomHorizontal","leftCol","rightCol","scrollLeft","vDomScrollPosLeft","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","windowBuffer","visibleRows","initialized","isFitData","compatibilityCheck","layoutCheck","vertScrollListen","frozen","ok","find","col","startsWith","clearVisRowCache","dataChange","scroll","buffer","columnsByIndex","old","cols","colPos","clear","calcWindowBuffer","config","leftPos","rightPos","fitDataCheck","vdomHoz","paddingLeft","paddingRight","reinitChanged","reinitializeRows","initializeRow","reinitializeRow","change","collsWidth","colEnd","generateCells","layoutRefresh","getVisibleRows","diff","abs","addColRight","removeColLeft","addColLeft","removeColRight","start","end","changes","getCell","fitDataColActualWidthCheck","prepend","ex","message","newWidth","widthDiff","colPositionAdjust","ColumnManager","blockHozScrollEvent","headersElement","columnsByField","defaultColumnOptions","initializeRenderer","createHeadersElement","createHeaderElement","insertBefore","scrollHorizontal","renderClass","renderers","RendererVirtualDomHorizontal","RendererBasicHorizontal","initialize","hozAdjust","scrollWidth","marginLeft","scrollColumns","definitions","sorter","setColumns","_addColumn","_reIndexColumns","redraw","before","nextToColumn","colEl","topColumn","parentIndex","nextEl","nextSibling","columnRendered","getHeight","adjustTableSize","_getSelf","HTMLElement","root","matches","fieldRoot","active","structured","from","moveColumnActual","reinitialize","_moveColumnInArray","getComponents","updateRows","fromIndex","toIndex","concat","adjust","offsetLeft","generateCell","totalWidth","fixedWidth","colWidth","layoutMode","resetScroll","footerManager","RowComponent","_row","transform","getCells","getRowPosition","moveToRow","updateData","normalizeHeight","nextRow","prevRow","Row","manualHeight","outerHeight","created","setData","create","deleteCells","renderRowCells","rerenderRowCells","children","resizableRows","setHeight","clearHeight","updatedData","tempData","newRowData","JSON","parse","attrname","getColumnsByFieldRoot","findCell","nextDisplayRow","prevDisplayRow","toRow","findRow","moveRowActual","refreshActiveData","deleteActual","getRowIndex","detatchModules","deleteRow","group","BaiscVertical","visibility","onlyGroupHeaders","styleRow","rowTop","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topRow","topOffset","deinitializeHeight","topDiff","bottomDiff","margin","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","topEdge","bottomEdge","topFound","bottomRow","slice","forceMove","holder","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","containerHeight","rowHeight","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","placeholderContents","firstRender","renderMode","fixedHeight","activeRowsPipeline","activeRows","activeRowsCount","displayRows","displayRowsCount","redrawBlockRestoreConfig","redrawBlockRenderInPosition","dataPipeline","displayPipeline","initializePlaceholder","leftDir","topDir","_positionPlaceholder","scrollRows","renderInPosition","columnsChanged","pagination","_setDataActual","reRenderInPosition","generateColumnsFromRowData","_wipeElements","wipe","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","regenerateRowNumbers","_showPlaceholder","pos","addRowActual","findAddRowPos","reverse","addRow","_clearPlaceholder","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","getRows","handler","priority","sort","a","b","skipStage","stage","cascadeOrder","refreshPipelines","renderTable","layoutColumnsOnNewData","resetDisplayRows","setDisplayRows","viewable","RendererVirtualDomVertical","RendererBasicVertical","_clearTable","renderEmptyScroll","initialHeight","otherHeight","external","resize","tableWidth","browser","event","createEvent","initEvent","dispatchEvent","Event","FooterManager","containerElement","createContainerElement","links","initializeElement","querySelector","activate","deactivate","link","footerRedraw","InteractionManager","abortClasses","previousTargets","listeners","componentMap","pseudoTrackers","subscriber","pseudoTracking","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","pseudoMouseEnter","pseudoMouseLeave","leaveList","linkedKeys","filter","includes","values","comp","subscriptionChanged","clearWatchers","added","bindPseudoEvents","updateEventListeners","track","removeEventListener","path","composedPath","targets","findTargets","bindComponents","triggerEvents","abort","elTargets","targetMatches","previousTarget","closest","ComponentFunctionBinder","bindings","funcName","hanlder","DataLoader","loaderElement","createLoaderElement","msgElement","createMsgElement","loadingElement","errorElement","requestOrder","loading","template","trim","firstElementChild","params","replace","requestNo","showLoader","mapParams","response","objectInvert","rowData","hideLoader","showError","map","shouldLoad","langText","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifiySubscriptionChange","notifiers","args","shift","callResult","apply","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","confirmed","TableRegistry","tables","query","results","querySelectorAll","matchElement","Tabulator","lookupTable","Module","_handler","register","func","registerDataPipelineHandler","registerDisplayPipelineHandler","reinitializeColumnWidths","responsiveLayout","modExists","colsWidth","gap","lastCol","responsive","flexWidth","flexGrowUnits","flexColWidth","flexColumns","fixedShrinkColumns","flexShrinkUnits","overflowWidth","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","remainingFlexGrowUnits","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","fitData","fitDataFill","fitDataGeneral","fitDataTable","fitDataStretch","fitColumns","Layout","mode","registerTableOption","registerColumnOption","modes","moduleName","defaultModes","Localize","locale","lang","langList","langs","headerFilterPlaceholder","setHeaderFilterPlaceholder","installLang","setLocale","registerTableFunction","getLang","headerFilters","_setLangProp","desiredLocale","traverseLang","trans","prop","navigator","language","toLowerCase","prefix","_executeBindings","pathArray","_getLangElement","level","rootPath","binding","defaultLangs","Comms","receive","selectors","connections","connection","con","action","tableComms","commsReceived","ModuleBinder","tabulator","bindStaticFuctionality","bindModules","coreModules","moduleBindings","extendModule","property","source","registerModule","mod","registerModuleBinding","findTable","prototype","orderedMods","unOrderedMods","moduleCore","modulesCore","moduleInitOrder","modulesRegular","core","mods","interactionMonitor","browserSlow","browserMobile","rtl","originalElement","initializeCoreSystems","_create","_clearObjectPointers","_mapDeprecatedFunctionality","InteractionMonitor","getSelection","empty","removeAllRanges","selection","_rtlCheck","_buildElement","_initializeTable","_loadInitialData","getComputedStyle","direction","reactiveData","newElement","tagName","attributes","replaceChild","_detectBrowser","deregister","ua","userAgent","vendor","opera","test","restoreRedraw","blockActiveLoad","clearData","getDataCount","responses","addRows","newRows","getRowFromPosition","foundRows","fromRow","getDefinitionTree","fromColumn","plugin","required","Accessor","allowedTypes","initializeColumn","transformRow","charAt","toUpperCase","accessor","lookupAccessor","accessors","rowComponent","traverse","colCompnent","defautlAccessors","method","generateParamsList","serializeParams","encoded","encodeURIComponent","join","url","contentType","urlGenerator","ajaxContentType","contentTypeFormatters","headers","body","Accept","location","origin","credentials","fetch","json","status","statusText","stringify","form","FormData","append","Ajax","loaderPromise","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxURL","setUrl","setDefaultConfig","ajaxConfig","getUrl","requestDataCheck","requestParams","requestData","ajaxParams","previousData","generateConfig","sendRequest","defaultConfig","ajaxRequesting","ajaxResponse","defaultContentTypeFormatters","updateOrAddData","insert","addData","clipboard","headerFindSuccess","columnMap","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","generateExportList","clipboardCopyConfig","clipboardCopyStyled","genereateHTMLTable","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","checkPaseOrigin","getPasteData","mutateData","mutator","valid","edit","currentCell","defaultPasteActions","defaultPasteParsers","CalcComponent","calcParams","precision","reduce","sum","Number","toFixed","parseFloat","String","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","cellValueChanged","initializeColumnCheck","rowsUpdated","recalcActiveRows","recalcActiveRowsRefresh","tableRedraw","getResults","userRecalc","recalc","groupBy","recalcRowGroup","dataTreeStartExpanded","dataTree","recalcAll","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","rowsToData","generateRow","frozenColumns","recalcGroup","groupRows","getRowGroup","groups","getChildGroups","generateRowData","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","disable","enable","format","getFormatter","paramKey","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","registerComponentFunction","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","isRowExpanded","dummyEl","dataTreeChildField","dataTreeChildIndent","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","layoutRow","rowDelete","rowDataChanged","columnMoving","initializeElementField","registerDisplayHandler","firstCol","getFirstVisibleColumn","dataTreeElementColumn","getTreeChildren","redrawNeeded","refreshData","childArray","controlEl","generateControlElement","cloneNode","marginRight","getPropertyValue","oldControl","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","subChildren","sub","childData","childRow","childIndex","findChildIndex","recurse","setFileContents","delimiter","fileContents","depth","bom","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","orientation","unit","parseRow","styles","content","colSpan","rowSpan","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","self","sheetName","workbook","XLSX","utils","book_new","tableFeatures","SheetNames","Sheets","generateSheet","merges","worksheet","s","c","r","j","Date","sheet_add_aoa","encode_range","sheetOnly","sheets","sheet","commsSend","intercept","s2ab","buf","ArrayBuffer","view","Uint8Array","charCodeAt","write","bookType","bookSST","csv","jsonLines","pdf","xlsx","Download","blob","download","downloadToTab","filename","interceptCallback","downloadFunc","buildLink","mime","triggerDownload","downloaders","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","Blob","downloadReady","URL","createObjectURL","msSaveOrOpenBlob","click","defaultDownloaders","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","keyCode","maskAutoFill","onRendered","success","cancel","editorParams","cellValue","input","search","padding","boxSizing","elementAttributes","getAttribute","preventScroll","onChange","vertNav","verticalNavigation","count","whiteSpace","getRow","heightNow","selectionStart","stopImmediatePropagation","step","blurFunc","cellEl","initialDisplayValue","defaultValue","listEl","multiselect","dataItems","currentItem","displayItems","currentItems","blurable","blockListShow","searchWord","searchWordTimeout","getUniqueColumnValues","getColumnByField","getColumn","parseItems","inputValues","curentValues","dataList","displayList","processComplexListItem","label","itemParams","setItem","sortValuesList","fillList","listItemFormatter","toggleItem","chooseItem","setCurrentItem","scrollIntoView","behavior","block","inline","fillInput","unsetItem","hideList","chooseItems","unsetItems","len","cancelItem","showList","removeScrollListener","scrollTovalue","character","fromCharCode","cursor","readOnly","uniqueColumnValues","genUniqueColumnValues","filterList","term","intialLoad","items","searchFunc","addNotice","searchingPlaceholder","fillListIfNotEmpty","err","showListOnEmpty","notice","searchEl","clearList","itemList","emptyPlaceholder","current","freetext","allowEmpty","showInputValue","maxStars","getElementsByTagName","size","stars","starsHolder","star","createElementNS","starChange","buildStar","starHolder","nextStar","blur","changeValue","overflow","textOverflow","percent","bar","mouseDrag","mouseDragWidth","updateValue","calcVal","round","backgroundColor","screenX","tristate","indetermValue","indeterminateValue","indetermState","marginTop","indeterminate","checked","textarea","number","autocomplete","progress","tickCross","Edit","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellisEdited","clearEdited","editCell","cellCancelEdit","bindEditor","columnDeleteCheck","rowDeleteCheck","cancelEdit","keybindingNavigateNext","newRow","edited","nextCell","findNextEditableCell","getIndex","findPrevEditableCell","allowEdit","check","prevCell","editor","editable","validate","cellValidate","clearEditor","variableHeight","cellEditCancelled","contains","button","forceEdit","focusCellNoEvent","getRenderMode","leftEdge","rightEdge","leftMargin","rightMargin","rendered","cellEditor","validationMode","focusScrollAdjust","cellClick","cellEditing","editIndex","invalid","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","genereateTableElement","selectRow","selectedRows","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","genereateHeaderElement","genereateGroupElement","genereateCalcElement","genereateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","generator","isVisible","cellWrapper","formatCells","formatExportValue","align","renderedCallback","htmlOutputConfig","props","lookup","fromStyle","filterVal","rowVal","filterParams","RegExp","keywords","separator","keyword","matchAll","endsWith","Filter","headerFilterColumns","prevHeaderFilterChangeCheck","tableInitialized","searchRows","searchData","userSetFilter","userRefreshFilter","userAddFilter","getFilters","userSetHeaderFilterFocus","userGetHeaderFilterValue","userSetHeaderFilterValue","getHeaderFilters","userRemoveFilter","userClearFilter","userClearHeaderFilter","setHeaderFilterFocus","reloadHeaderFilter","getHeaderFilterValue","setHeaderFilterValue","initializeColumnHeaderFilter","hideHeaderFilterElements","showHeaderFilterElements","tableBuilt","filterMode","remoteFilterParams","registerDataHandler","initialFilter","setFilter","initialHeaderFilter","refreshFilter","addFilter","removeFilter","all","clearFilter","clearHeaderFilter","headerFilter","setHeaderFilterColumnPlaceholder","filterType","tagType","attrType","filterChangeCheck","filterFunc","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","headerElement","headerFilterEmptyCheck","headerFilterParams","headerPos","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","reloadData","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","defaultFilters","formatterParams","emptyToSpace","sanitizeHTML","floatVal","sign","integer","decimal","rgx","decimalSym","thousandSym","thousand","negativeSign","symbolAfter","urlPrefix","labelField","urlField","src","urlSuffix","truthy","allowTruthy","tick","tickElement","cross","crossElement","DT","DateTime","luxon","inputFormat","outputFormat","invalidPlaceholder","newDatetime","fromISO","fromFormat","isValid","timezone","shiftTimezone","toFormat","suffix","humanize","date","now","starActive","starInactive","colors","color","percentValue","legendAlign","legend","legendColor","barEl","barContainer","legendEl","holderEl","toggleList","isOpen","checkbox","selectableRangeMode","toggleSelect","handleComplexRowClick","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","plaintext","money","image","datetime","datetimediff","traffic","buttonTick","buttonCross","rownum","responsiveCollapse","rowSelection","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","leftColumns","rightColumns","rightPadding","initializationMode","scrollEndTimer","layoutCell","blockLayout","unblockLayout","edge","frozenCheck","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","layoutGroupCalcs","groupList","allCells","leftParents","parentEl","getColGroupParentElement","getTableElement","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","styleRows","GroupComponent","groupManager","toggleVisibility","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","elementContents","arrowElement","createElements","addBindings","createValueGroups","arrow","movableRows","moveRow","initializeGroupHeader","allowedValues","_createGroup","toggleElement","groupToggleElement","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","updateGroupRows","scrollHeader","groupValues","removeGroup","noCalc","_visSet","getHeadersAndRows","hasTopCalcs","detachElement","generateTopRow","hasBottomCalcs","generateBottomRow","groupClosedShowCalcs","getDisplayIndex","checkClassicModeGroupHeaderWidth","prev","compoment","getPath","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","configureGroupSetup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","groupStartOpen","langValue","removeCalcs","getRealColumns","lookupFunc","prevValue","assignRowToGroup","getGroupedData","toGroup","fromGroup","removeRow","insertRow","generateGroups","groupComponents","groupListData","rowCount","headerContent","pullGroupListData","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","samePath","every","groupPath","groupId","cellEdit","rowAdd","_rebindRow","rowMove","posFrom","newValue","posTo","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","getGroup","undoers","redoers","oldRow","defaultUndoers","defaultRedoers","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","optionsArr","attrib","_attribValue","exists","_findCol","textContent","csvImporter","inQuote","nextChar","Import","importFromFile","importFormat","loadDataCheck","loadData","importData","lookupImporter","structureData","importer","importers","extension","pickFile","extensions","accept","file","files","reader","FileReader","importReader","readAsArrayBuffer","readAsBinaryString","readAsDataURL","readAsText","onload","onerror","parsedData","structureArrayToObject","structureArrayToColumns","getColumns","defaultImporters","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","groupTap","groupDblTap","groupTapHold","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tapDbl","initializeExternalEvents","cellContentsSelectionFixer","selectNode","subscriptionChangeExternal","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","notouch","watchers","componentObj","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","keyBlock","newPos","scrollMax","navLeft","navRight","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","actions","bindingList","mapBinding","symbolsList","ctrl","meta","symbols","code","checkBinding","ctrlKey","shiftKey","metaKey","defaultBindings","defaultActions","Menu","menuContainer","menuElements","blurEvent","hideMenu","escEvent","escMenu","nestedMenuBlock","positionReversedX","currentComponent","lookupMenuContainer","initializeRowWatchers","initializeGroupWatchers","checkMenuContainerIsParent","container","rowContextMenu","loadMenuEvent","on","rowClickMenu","groupContextMenu","groupClickMenu","headerContextMenu","loadMenuTableColumnEvent","headerClickMenu","headerMenu","initializeColumnHeaderMenu","contextMenu","loadMenuTableCellEvent","clickMenu","headerMenuEl","menu","loadMenu","touch","MouseEvent","menuEl","itemEl","disabled","hideOldSubMenus","positionMenu","pop","x","y","parentOffset","touches","pageX","pageY","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","movableColumns","mousemove","which","startMove","bindTouchEvents","startXMove","prevColWidth","nextColWidthLast","prevColWidthLast","moveToCol","_bindMouseMove","movingCells","_unbindMouseMove","columnHolder","xPos","scrollPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectionSelectorsTables","connectionSelectorsElements","connectionElements","connectedTable","connectedRow","movableRowsConnectedTables","movableRowsConnectedElements","initializeCell","mouseup","tableRowDrop","previousSibling","rowHandle","startYMove","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","setStartPosition","connectToTables","pointerEvents","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","connectionTables","commsConnections","dropEvent","elementRowDrop","tabulatorElementDropEvent","sender","movableRowsSender","senders","movableRowsReceiver","receivers","connect","disconnect","dropComplete","fromTable","toTable","Mutator","enabled","transformCell","lookupMutator","mutators","mutatorEdit","defaultMutators","pageSize","currentRow","currentPage","totalRows","totalPages","showingEl","valueEl","ofEl","totalEl","rowsEl","pages","Page","progressiveLoad","pageCounterElement","pageCounter","page","remoteRowCountEstimate","initialLoad","dataChanging","pageSizes","setMaxPage","setPage","userSetPageToRow","userSetPageSize","getPageSize","previousPage","nextPage","getPage","getPageMax","setPageToRow","initialLoadComplete","calculatePageSizes","paginationAddRow","rowAddingPosition","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePageCounter","initializePaginator","initializeProgressive","scrollVertical","dispRows","testElRow","testElCell","paginationSize","generatePageSizeSelectList","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","counter","paginationCounter","pageCounters","hidden","pageSelectLabel","paginationCounterHolder","paginationElement","paginationCounterElement","paginationInitialPage","paginationButtonCount","trigger","leftSize","rightSize","_generatePageButton","actualRowPageSize","actualStartRow","actualRows","setMaxRows","_setPageButtons","_setPageCounter","last_page","last_row","progressiveLoadDelay","footer","defaultPageCounters","local","id","localStorage","getItem","cookie","cookiePos","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","testKey","removeItem","persistence","persistenceMode","persistenceID","retreivedData","localStorageTest","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retreiveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","oldCols","newCols","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","excludedKeys","defStore","colDef","defaultReaders","defaultWriters","Print","manualBlock","printAsHtml","replaceTable","cleanup","printFullscreen","genereateTable","printConfig","printStyled","printRowRange","scrollX","scrollY","footerEl","tableEl","footerContent","printHeader","printFooter","printFormatter","scrollTo","ReactiveData","origFuncs","currentVersion","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","getRowFromDataObject","startRow","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","ResizeColumns","startColumn","startWidth","prevHandle","layoutCellHandles","layoutColumnHeader","resizable","handleDown","nearestColumn","_checkResizability","_mouseDown","oldWidth","prevHandleDown","colIndex","mouseMove","checkCellHeights","mouseUp","ResizeRows","startHeight","screenY","ResizeTable","observer","containerObserver","tableHeight","containerWidth","autoResize","tableStyle","ResizeObserver","entry","nodeHeight","contentRect","nodeWidth","observe","tableResized","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","order","generateCollapsedContent","generateCollapsedRowContent","colCount","working","getFlexBaseWidth","hideColumn","showColumn","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","titleData","valueData","node_content","titleHighlight","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectable","clearSelectionData","rowRetrieve","selectablePersistence","_deselectRow","_rowSelectionChanged","endSelect","selected","selectableCheck","getCurrentCell","_clearSelection","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","_selectRow","rowMatch","rowInfo","selectableRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","emptyAlign","langLocale","localeCompare","el1","el2","calc","d","as","bs","a1","b1","L","rx","rd","isFinite","string","time","boolean","array","alphanum","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortElement","columnHeaderSortMulti","newSortList","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","findSorter","setColumnHeader","_sortItems","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","defaultSorters","parameters","numeric","starts","ends","minLength","maxLength","regex","reg","unique","cellData","Validate","invalidCells","getInvalidCells","userClearCellValidation","userValidate","cellIsValid","clearValidation","columnValidate","rowValidate","validator","_extractValidator","substring","_buildValidator","validators","invalidIndex","defaultValidators","TabulatorFull"],"mappings":"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"} \ No newline at end of file +{"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/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/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.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/Tooltip/Tooltip.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\tdebugInitialization:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tpopupContainer:false,\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //separator for nested data\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\trowHeight:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\tdataLoaderErrorTimeout:3000,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}\r\n","export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key){\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","import Column from './Column.js';\r\n\r\n//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this._column.getTitleDownload();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"maxInitialWidth\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate, force){\r\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tif(this.column.definition.cellEdited){\r\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate, force){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value !== value || force){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\r\n\t\tthis.dispatch(\"cell-height\", this, \"\");\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\r\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleDownload = null;\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.maxInitialWidth = null;\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif (def.maxInitialWidth) {\r\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\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);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\r\n\t\t\tcolumn.columnRendered();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\r\n\t\tthis.dispatch(\"column-height\", this, \"\");\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this.titleDownload;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-rendered\", this);\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\t// maxInitialWidth ignored here as width specified\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData(force);\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(force){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tvar setTo = maxWidth + 1;\r\n\t\t\t\tif (this.maxInitialWidth && !force) {\r\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\r\n\t\t\t\t}\r\n\t\t\t\tthis.setWidthActual(setTo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn clone;\r\n\t}\r\n}","export default class OptionsList {\r\n\tconstructor(table, msgType, defaults = {}){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = Object.assign({}, defaults)\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determine weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\t\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t\t\r\n\t\tthis.fitDataColAvg = 0;\r\n\t\t\r\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\r\n\t\t\r\n\t\tthis.visibleRows = null;\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.isFitData = false;\r\n\t\t\r\n\t\tthis.columns = [];\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.compatibilityCheck();\r\n\t\tthis.layoutCheck();\r\n\t\tthis.vertScrollListen();\r\n\t}\r\n\t\r\n\tcompatibilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\t\t\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\t\t\r\n\t\treturn ok;\r\n\t}\r\n\t\r\n\tlayoutCheck(){\r\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\r\n\t}\r\n\r\n\tvertScrollListen(){\r\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\r\n\t}\r\n\r\n\tclearVisRowCache(){\r\n\t\tthis.visibleRows = null;\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\t\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\t\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\t\t\t\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\r\n\t\t}\r\n\t}\r\n\t\r\n\tcalcWindowBuffer(){\r\n\t\tvar buffer = this.elementVertical.clientWidth;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tif(width > buffer){\r\n\t\t\t\t\tbuffer = width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.windowBuffer = buffer * 2;\r\n\t}\r\n\t\r\n\trerenderColumns(update, blockRedraw){\t\t\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t},\r\n\t\tcolPos = 0;\r\n\t\t\r\n\t\t\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.clear();\r\n\t\t\r\n\t\tthis.calcWindowBuffer();\r\n\t\t\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\t\t\t\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\t\t\t\t\r\n\t\t\t\tconfig.width = width;\r\n\t\t\t\t\r\n\t\t\t\tif (this.isFitData) {\r\n\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t\t\t\t\t//column is visible\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol == -1){\r\n\t\t\t\t\t\tthis.leftCol = this.columns.length;\r\n\t\t\t\t\t\tthis.vDomPadLeft = colPos;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol = this.columns.length;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// column is hidden\r\n\t\t\t\t\tif(this.leftCol !== -1){\r\n\t\t\t\t\t\tthis.vDomPadRight += width;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.vdomHoz = config;\r\n\t\t\t\t\r\n\t\t\t\tcolPos += width;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.reinitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\t\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\t\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\t\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\t\t\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\t\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\t\t\r\n\t\tif(this.isFitData){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.generateCells();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// if(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t// \tbreak;\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// for(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t// \tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\t\t\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn !match;\r\n\t}\r\n\t\r\n\treinitializeRows(){\r\n\t\tvar rows = this.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetVisibleRows(){\r\n\t\tif (!this.visibleRows){\r\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t}\r\n\r\n\t\treturn this.visibleRows;\t\r\n\t}\r\n\t\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\t\r\n\t\t\tlet column = this.columns[this.rightCol + 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t\t\t}\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol - 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\r\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(diff){\r\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\r\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.rightCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\t\t\tthis.rightCol --;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\t\t\tthis.leftCol ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\t\t\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\t\t\t\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn widthDiff;\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\t\t\t\t\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\t\t\t\t\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nimport defaultColumnOptions from './column/defaults/options.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\t\t\tvar topColumn = nextToColumn.getTopColumn()\r\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\r\n\t\t\tvar nextEl = topColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcolumn.columnRendered();\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\tverticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibleColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\t\t\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //hold elements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.created = false;\r\n\t\t\r\n\t\tthis.setData(data);\r\n\t}\r\n\t\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\t\t\r\n\t\tthis.element = el;\r\n\t}\r\n\t\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\t\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\t\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\t\t\r\n\t\tif(!this.initialized || force){\r\n\t\t\t\r\n\t\t\tthis.deleteCells();\r\n\t\t\t\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\t\t\t\r\n\t\t\tthis.generateCells();\r\n\t\t\t\r\n\t\t\tthis.initialized = true;\r\n\t\t\t\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\t\t\t\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\t\t\t\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t\t\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t}\r\n\t\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\t\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\t\t\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\t\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight;\r\n\t\t\r\n\t\tif(this.table.options.rowHeight){\r\n\t\t\tthis.height = this.table.options.rowHeight;\r\n\t\t}else{\r\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\t\t\t\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tvar height = cell.getHeight();\r\n\t\t\t\tif(height > maxHeight){\r\n\t\t\t\t\tmaxHeight = height;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(force){\r\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t\t}else{\r\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\t\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\t\t\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\t\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\t\tif(force && !this.table.options.rowHeight){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\t\t\r\n\t\tthis.calcHeight(force);\r\n\t\t\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\t\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\t\t\t\r\n\t\t\tthis.manualHeight = true;\r\n\t\t\t\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\t\t\t\r\n\t\t\tthis.setCellHeight();\r\n\t\t\t\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\t\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\t\t\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\t\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\t\t\t\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\t\t\t\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\t\t\t\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\t\t\t\t\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\t\t\t\t\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\t\t\t\r\n\t\t\t//this.reinitialize();\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\t\t\t\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.data;\r\n\t}\r\n\t\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\t\t\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\t\t\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\t\t\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\t\t\r\n\t\treturn this.cells;\r\n\t}\r\n\t\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\t\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\t\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\t\t\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\t\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\t\t\r\n\t\tthis.deleteActual();\r\n\t\t\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\t\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\t\t\r\n\t\tthis.detatchModules();\r\n\t\t\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\t\t\r\n\t\tthis.deleteCells();\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\t\t\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\t\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\t\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\t\t\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\t\t\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\t\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.clearRows();\r\n\t\tthis.renderRows();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\t// element.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\r\n\t\t});\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\t\tthis.placeholder = null; //placeholder element\r\n\t\tthis.placeholderContents = null; //placeholder element\r\n\t\t\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\t\t\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\t\t\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\t\t\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\t\t\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\t\t\r\n\t\tthis.renderer = null;\r\n\t}\r\n\t\r\n\t//////////////// Setup Functions /////////////////\r\n\t\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitializePlaceholder(){\r\n\t\t//configure placeholder element\r\n\t\tif(typeof this.table.options.placeholder == \"string\"){\r\n\t\t\tlet el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\t\t\t\r\n\t\t\tlet contents = document.createElement(\"div\");\r\n\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\r\n\t\t\tcontents.innerHTML = this.table.options.placeholder;\r\n\t\t\t\r\n\t\t\tel.appendChild(contents);\r\n\t\t\t\r\n\t\t\tthis.placeholderContents = contents;\r\n\t\t\tthis.placeholder = el;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\t\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializePlaceholder()\r\n\t\tthis.initializeRenderer();\r\n\t\t\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\t\t\r\n\t\tthis.firstRender = true;\r\n\t\t\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\t\t\t\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\r\n\t\t\t\tthis._positionPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//handle vertical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\t\t\t\t\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\t\t\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\t\t\r\n\t\treturn match || false;\r\n\t}\r\n\t\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\t\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\t\t\t\t\r\n\t\t\t\tthis._setDataActual(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\t\t\r\n\t\tthis._wipeElements();\r\n\t\t\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\t\t\t\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\t\t\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\t\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\t\t\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\t\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\t\t\t\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlength = data.length - 1;\r\n\t\t\t\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, true);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn pos;\r\n\t}\r\n\t\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\t\t\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\t\t\t\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\t\t\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\t\t\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\t\t\t\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\t\t\t\t\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(top){\r\n\t\t\t\t\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\t\t\r\n\t\tthis.moveRowActual(from, to, after);\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\t\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\t\t\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\t\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\t\t\r\n\t\tif(from !== to){\r\n\t\t\t\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\t\t\t\r\n\t\t\tif (fromIndex > -1) {\r\n\t\t\t\t\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\t\t\t\t\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\t\t\t\t\r\n\t\t\t\tif (toIndex > -1) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\t\t\t\t\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\t\t\t\t\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\t\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\t\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\t\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\t\t\r\n\t\t\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\t\t\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn nextRow;\r\n\t}\r\n\t\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\t\t\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn prevRow;\r\n\t}\r\n\t\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\t\t\r\n\t\trow = this.findRow(row);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\t\t\r\n\t\treturn rows.length;\r\n\t}\r\n\t\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\t\t\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\t\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\t\t\r\n\t\t\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\t\t\t\t\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.renderTable();\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-refreshed\");\r\n\t\t}\r\n\t}\r\n\t\r\n\trefreshPipelines(handler, stage, index, renderInPosition){\r\n\t\tthis.dispatch(\"data-refreshing\");\r\n\t\t\r\n\t\tif(!handler){\r\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t}\r\n\t\t\r\n\t\t//cascade through data refresh stages\r\n\t\tswitch(stage){\r\n\t\t\tcase \"all\":\r\n\t\t\t//handle case where alldata needs refreshing\r\n\t\t\t\r\n\t\t\tcase \"dataPipeline\":\r\n\t\t\t\r\n\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\tindex = 0;\r\n\t\t\tthis.resetDisplayRows();\r\n\t\t\t\r\n\t\t\tcase \"displayPipeline\":\r\n\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\t\t\t\t\r\n\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcase \"end\":\r\n\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t}\r\n\t}\r\n\t\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\t\t\t\t\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\t\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\t\t\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\t\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\t\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\t\t\r\n\t\tvar output = true;\r\n\t\t\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\t\t\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetVisibleRows(chain, viewable){\r\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\r\n\t\t\r\n\t\tif(chain){\r\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\t\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(false, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\t\t\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\t\t\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\t\t\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t\t\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\t\r\n\trenderTable(){\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\t\t\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tthis._clearTable();\r\n\t\t\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis.renderer.renderRows();\r\n\t\t\t\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"table-layout\");\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\t\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\t\t\r\n\t\tthis._clearPlaceholder();\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\t\r\n\t_showPlaceholder(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\t\t\t\r\n\t\t\tthis.getElement().appendChild(this.placeholder);\r\n\t\t\tthis._positionPlaceholder();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_positionPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\r\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\t\t\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\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));\r\n\t\t\t\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.renderer.resize();\r\n\t\t\t\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._positionPlaceholder();\r\n\t}\r\n\t\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\t\t\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\t\t\t\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRenderInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.redrawBlockRenderInPosition = false;\r\n\t}\r\n\t\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t\t\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\t\t\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\t\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.containerElement = this.createContainerElement(); //containing element\r\n\t\tthis.external = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t\r\n\tcreateContainerElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer-contents\");\r\n\r\n\t\tthis.element.appendChild(el);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element){\r\n\t\tthis.activate();\r\n\r\n\t\tthis.containerElement.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element){\r\n\t\tthis.activate();\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.dispatch(\"footer-redraw\")\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\nimport Row from '../row/Row.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\t\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.el = null;\r\n\t\t\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\t\t\r\n\t\tthis.previousTargets = {};\r\n\t\t\r\n\t\tthis.listeners = [\r\n\t\t\t\"click\",\r\n\t\t\t\"dblclick\",\r\n\t\t\t\"contextmenu\",\r\n\t\t\t\"mouseenter\",\r\n\t\t\t\"mouseleave\",\r\n\t\t\t\"mouseover\",\r\n\t\t\t\"mouseout\",\r\n\t\t\t\"mousemove\",\r\n\t\t\t\"touchstart\",\r\n\t\t\t\"touchend\",\r\n\t\t];\r\n\t\t\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\t\t\r\n\t\tthis.pseudoTrackers = {\r\n\t\t\t\"row\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"cell\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"group\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"column\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t}\r\n\t\t\r\n\t\tthis.pseudoTracking = false;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.el = this.table.element;\r\n\t\t\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\t\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\t\t\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\t\t\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\t\r\n\tbindPseudoEvents(){\r\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\r\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\r\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\r\n\t\t});\r\n\t\t\r\n\t\tthis.pseudoTracking = true;\r\n\t}\r\n\t\r\n\tpseudoMouseEnter(key, e, target){\r\n\t\tif(this.pseudoTrackers[key].target !== target){\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.pseudoMouseLeave(key, e);\r\n\t\t\t\r\n\t\t\tthis.pseudoTrackers[key].target = target;\r\n\t\t\t\r\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpseudoMouseLeave(key, e){\r\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\r\n\t\tlinkedKeys = {\r\n\t\t\t\"row\":[\"cell\"],\r\n\t\t\t\"cell\":[\"row\"],\r\n\t\t};\r\n\t\t\r\n\t\tleaveList = leaveList.filter((item) => {\r\n\t\t\tvar links = linkedKeys[key];\r\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\tleaveList.forEach((key) => {\r\n\t\t\tvar target = this.pseudoTrackers[key].target;\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t\t\r\n\t\t\t\tthis.pseudoTrackers[key].target = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\t\t\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\t\t\t\t\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this))\r\n\t}\r\n\t\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\t\t\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\r\n\t\t\tthis.bindPseudoEvents();\r\n\t\t}\r\n\t\t\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\t\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\t\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t\t\r\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\r\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\t\t\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\t\t\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\t\t\t\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\t\t\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\t\t\t\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\r\n\t\t\t\t\t\t\ttargets[key] = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tif(targets[\"row\"] instanceof Row){\r\n\t\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t\t}else{\t\r\n\t\t\t\t\t\t\tif(targets[\"row\"]){\r\n\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?\")\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.previousTargets = targetMatches;\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\t\t\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearWatchers(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.handler){\r\n\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\tlistener.handler = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFunctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\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?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.alertLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\r\n\t\t\t\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.clearAlert();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\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\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.alertError();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.clearAlert();\r\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\talertLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\r\n\t\t}\r\n\t}\r\n\r\n\talertError(){\r\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\tthis.table.alertManager.clear();\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(table, optionsList, debug){\r\n\t\tthis.table = table;\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this.table, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class Popup extends CoreFeature{\r\n constructor(table, element, parent){\r\n super(table);\r\n \r\n this.element = element;\r\n this.container = this._lookupContainer();\r\n \r\n this.parent = parent;\r\n \r\n this.reversedX = false;\r\n this.childPopup = null;\r\n this.blurable = false;\r\n this.blurCallback = null;\r\n this.renderedCallback = null;\r\n \r\n this.visible = false;\r\n \r\n this.element.classList.add(\"tabulator-popup-container\");\r\n \r\n this.blurEvent = this.hide.bind(this, false);\r\n this.escEvent = this._escapeCheck.bind(this);\r\n }\r\n \r\n _lookupContainer(){\r\n var container = this.table.options.popupContainer;\r\n \r\n if(typeof container === \"string\"){\r\n container = document.querySelector(container);\r\n \r\n if(!container){\r\n console.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\r\n }\r\n }else if (container === true){\r\n container = this.table.element;\r\n }\r\n \r\n if(container && !this._checkContainerIsParent(container)){\r\n container = false;\r\n console.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\r\n }\r\n \r\n if(!container){\r\n container = document.body;\r\n }\r\n \r\n return container;\r\n }\r\n \r\n _checkContainerIsParent(container, element = this.table.element){\r\n if(container === element){\r\n return true;\r\n }else{\r\n return element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\r\n }\r\n }\r\n \r\n renderCallback(callback){\r\n this.renderedCallback = callback;\r\n }\r\n \r\n containerEventCoords(e){\r\n var touch = !(e instanceof MouseEvent);\r\n \r\n var x = touch ? e.touches[0].pageX : e.pageX;\r\n var y = touch ? e.touches[0].pageY : e.pageY;\r\n \r\n if(this.container !== document.body){\r\n let parentOffset = Helpers.elOffset(this.container);\r\n \r\n x -= parentOffset.left;\r\n y -= parentOffset.top;\r\n }\r\n \r\n return {x, y};\r\n }\r\n \r\n elementPositionCoords(element, position = \"right\"){\r\n var offset = Helpers.elOffset(element),\r\n containerOffset, x, y;\r\n \r\n if(this.container !== document.body){\r\n containerOffset = Helpers.elOffset(this.container);\r\n \r\n offset.left -= containerOffset.left;\r\n offset.top -= containerOffset.top;\r\n }\r\n \r\n switch(position){\r\n case \"right\":\r\n x = offset.left + element.offsetWidth;\r\n y = offset.top - 1;\r\n break;\r\n \r\n case \"bottom\":\r\n x = offset.left;\r\n y = offset.top + element.offsetHeight;\r\n break;\r\n }\r\n \r\n return {x, y, offset};\r\n }\r\n \r\n show(origin, position){\r\n var x, y, parentEl, parentOffset, containerOffset, coords;\r\n \r\n if(origin instanceof HTMLElement){\r\n parentEl = origin;\r\n coords = this.elementPositionCoords(origin, position);\r\n \r\n parentOffset = coords.offset;\r\n x = coords.x;\r\n y = coords.y;\r\n \r\n }else if(typeof origin === \"number\"){\r\n parentOffset = {top:0, left:0};\r\n x = origin;\r\n y = position;\r\n }else{\r\n coords = this.containerEventCoords(origin);\r\n \r\n x = coords.x;\r\n y = coords.y;\r\n \r\n this.reversedX = false;\r\n }\r\n \r\n this.element.style.top = y + \"px\";\r\n this.element.style.left = x + \"px\";\r\n \r\n this.container.appendChild(this.element);\r\n \r\n if(typeof this.renderedCallback === \"function\"){\r\n this.renderedCallback();\r\n }\r\n \r\n this._fitToScreen(x, y, parentEl, parentOffset, position);\r\n \r\n this.visible = true;\r\n \r\n return this;\r\n }\r\n \r\n _fitToScreen(x, y, parentEl, parentOffset, position){\r\n var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\r\n\r\n //move menu to start on right edge if it is too close to the edge of the screen\r\n if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\r\n this.element.style.left = \"\";\r\n \r\n if(parentEl){\r\n this.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\r\n }else{\r\n this.element.style.right = (this.container.offsetWidth - x) + \"px\";\r\n }\r\n \r\n this.reversedX = true;\r\n }\r\n\r\n //move menu to start on bottom edge if it is too close to the edge of the screen\r\n if((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\r\n if(parentEl){\r\n switch(position){\r\n case \"bottom\":\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\r\n break;\r\n\r\n default:\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\r\n }\r\n \r\n }else{\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\r\n }\r\n }\r\n }\r\n \r\n isVisible(){\r\n return this.visible;\r\n }\r\n \r\n hideOnBlur(callback){\r\n this.blurable = true;\r\n \r\n if(this.visible){\r\n setTimeout(() => {\r\n this.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n this.subscribe(\"cell-editing\", this.blurEvent);\r\n document.body.addEventListener(\"click\", this.blurEvent);\r\n document.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n window.addEventListener(\"resize\", this.blurEvent);\r\n document.body.addEventListener(\"keydown\", this.escEvent);\r\n }, 100);\r\n \r\n this.blurCallback = callback;\r\n }\r\n \r\n return this;\r\n }\r\n \r\n _escapeCheck(e){\r\n if(e.keyCode == 27){\r\n this.hide();\r\n }\r\n }\r\n \r\n hide(silent = false){\r\n if(this.visible){\r\n if(this.blurable){\r\n document.body.removeEventListener(\"keydown\", this.escEvent);\r\n document.body.removeEventListener(\"click\", this.blurEvent);\r\n document.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n window.removeEventListener(\"resize\", this.blurEvent);\r\n this.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n this.unsubscribe(\"cell-editing\", this.blurEvent);\r\n }\r\n \r\n if(this.childPopup){\r\n this.childPopup.hide();\r\n }\r\n \r\n if(this.parent){\r\n this.parent.childPopup = null;\r\n }\r\n \r\n if(this.element.parentNode){\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n\r\n this.visible = false;\r\n\r\n if(this.blurCallback && !silent){\r\n this.blurCallback();\r\n }\r\n }\r\n \r\n return this;\r\n }\r\n \r\n child(element){\r\n if(this.childPopup){\r\n this.childPopup.hide();\r\n }\r\n \r\n this.childPopup = new Popup(this.table, element, this);\r\n \r\n return this.childPopup;\r\n }\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Popup from './tools/Popup.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registration ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = (...args) => {\r\n\t\t\t\tthis.table.initGuard(name);\r\n\r\n\t\t\t\treturn func(...args);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Footer Management ////////\r\n\t///////////////////////////////////\r\n\r\n\tfooterAppend(element){\r\n\t\treturn this.table.footerManager.append(element)\r\n\t}\r\n\r\n\tfooterPrepend(element){\r\n\t\treturn this.table.footerManager.prepend(element)\r\n\t}\r\n\r\n\tfooterRemove(element){\r\n\t\treturn this.table.footerManager.remove(element)\r\n\t} \r\n\r\n\t///////////////////////////////////\r\n\t//////// Popups Management ////////\r\n\t///////////////////////////////////\r\n\t\r\n\tpopup(menuEl, menuContainer){\r\n\t\treturn new Popup(this.table, menuEl, menuContainer);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Alert Management ////////\r\n\t///////////////////////////////////\r\n\r\n\talert(content, type){\r\n\t\treturn this.table.alertManager.alert(content, type);\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\treturn this.table.alertManager.clear();\r\n\t}\r\n\t\r\n}\r\n\r\nexport default Module;","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tthis.dispatch(\"layout-refreshing\")\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t\t\"counter\":{\r\n\t\t\t\t\"showing\": \"Showing\",\r\n\t\t\t\t\"of\": \"of\",\r\n\t\t\t\t\"rows\": \"rows\",\r\n\t\t\t\t\"pages\": \"pages\",\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\t\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\t\t\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\t\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\t\t\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\r\n\t\t\t\t\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\t\t\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\t\t\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tvar orderedStartMods = [],\r\n\t\t\torderedEndMods = [],\r\n\t\t\tunOrderedMods = [];\r\n\t\t\t\r\n\t\t\tthis.modules = {};\r\n\t\t\t\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\t\t\t\tlet module = new mod(this);\r\n\t\t\t\t\r\n\t\t\t\tthis.modules[name] = module;\r\n\t\t\t\t\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore.push(module);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(mod.moduleInitOrder){\r\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\r\n\t\t\t\t\t\t\torderedStartMods.push(module);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\torderedEndMods.push(module);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tunOrderedMods.push(module);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\t\t\t\r\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\r\n\t\t}\r\n\t}\r\n\t\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\t\t\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class Alert extends CoreFeature{\r\n constructor(table){\r\n super(table);\r\n \r\n this.element = this._createAlertElement();\r\n this.msgElement = this._createMsgElement();\r\n this.type = null;\r\n \r\n this.element.appendChild(this.msgElement);\r\n }\r\n \r\n _createAlertElement(){\r\n var el = document.createElement(\"div\");\r\n el.classList.add(\"tabulator-alert\");\r\n return el;\r\n }\r\n \r\n _createMsgElement(){\r\n var el = document.createElement(\"div\");\r\n el.classList.add(\"tabulator-alert-msg\");\r\n el.setAttribute(\"role\", \"alert\");\r\n return el;\r\n }\r\n \r\n _typeClass(){\r\n return \"tabulator-alert-state-\" + this.type;\r\n }\r\n \r\n alert(content, type = \"msg\"){\r\n if(content){\r\n this.clear();\r\n \r\n this.type = type;\r\n \r\n while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n \r\n this.msgElement.classList.add(this._typeClass());\r\n \r\n if(typeof content === \"function\"){\r\n content = content();\r\n }\r\n \r\n if(content instanceof HTMLElement){\r\n this.msgElement.appendChild(content);\r\n }else{\r\n this.msgElement.innerHTML = content;\r\n }\r\n \r\n this.table.element.appendChild(this.element);\r\n }\r\n }\r\n \r\n clear(){\r\n if(this.element.parentNode){\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n \r\n this.msgElement.classList.remove(this._typeClass());\r\n }\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport Alert from './tools/Alert.js';\r\n\r\nclass Tabulator {\r\n\t\r\n\tconstructor(element, options){\r\n\t\t\r\n\t\tthis.options = {};\r\n\t\t\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.alertManager = null; //hold Alert Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\r\n\t\t\r\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\t\t\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\r\n\t\t\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\t\r\n\t\tif(this.initializeElement(element)){\r\n\t\t\t\r\n\t\t\tthis.initializeCoreSystems(options);\r\n\t\t\t\r\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\t\t\r\n\t\tTableRegistry.register(this); //register table for inter-device communication\r\n\t}\r\n\t\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\t\t\t\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\t\tthis.alertManager = new Alert(this);\r\n\t\t\r\n\t\tthis.bindModules();\r\n\t\t\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\t\t\r\n\t\tthis._clearObjectPointers();\r\n\t\t\r\n\t\tthis._mapDeprecatedFunctionality();\r\n\t\t\r\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\t\t\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\t\t\r\n\t\tthis.dataLoader.initialize();\r\n\t\t// this.columnManager.initialize();\r\n\t\t// this.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\t\r\n\t//convert deprecated functionality to new functions\r\n\t_mapDeprecatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\t\r\n\t_clearSelection(){\r\n\t\t\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\tif (window.getSelection) {\r\n\t\t\tif (window.getSelection().empty) { // Chrome\r\n\t\t\t\twindow.getSelection().empty();\r\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t}\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\t\r\n\t//create table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\t\t\r\n\t\tthis._rtlCheck();\r\n\t\t\r\n\t\tthis._buildElement();\r\n\t\t\r\n\t\tthis._initializeTable();\r\n\t\t\r\n\t\tthis._loadInitialData();\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\t\r\n\t_rtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\t\t\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\t\t\r\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options,\r\n\t\tnewElement;\r\n\t\t\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\t\t\t\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\t\t\t\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\t\t\t\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\r\n\t\t\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\t\t\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\t\t\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\t\t\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\t\t\r\n\t\tthis.interactionMonitor.initialize();\r\n\t\t\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\t\t\r\n\t\tthis._detectBrowser();\r\n\t\t\r\n\t\t//initialize core modules\r\n\t\tthis.modulesCore.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t})\r\n\t\t\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\t\t\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\t\t\r\n\t\tif(options.autoColumns && options.data){\r\n\t\t\t\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\t\t\r\n\t\t//initialize regular modules\r\n\t\tthis.modulesRegular.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t});\r\n\t\t\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\t\t\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t}\r\n\t\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\t\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\t\t\r\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\r\n\t\t\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\t\t\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\t\t\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\t\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\t\t\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\t\t\r\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));\r\n\t}\r\n\t\r\n\tinitGuard(func, msg){\r\n\t\tvar stack, line;\r\n\t\t\r\n\t\tif(this.options.debugInitialization && !this.initialized){\r\n\t\t\tif(!func){\r\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\r\n\t\t\t\t\r\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\r\n\t\t\t\t\r\n\t\t\t\tif(line[0] == \" \"){\r\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\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 : \"\"));\r\n\t\t}\r\n\t\t\r\n\t\treturn this.initialized;\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\t\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\r\n\t\t\r\n\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t}\r\n\t\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\t\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\t\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\t\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t}\r\n\t\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\tresponses++;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\taddData(data, pos, index){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t.then((rows) => {\r\n\t\t\t\t\tvar output = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tresolve(output);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\t\t\t\t\t\r\n\t\t\t\t\tresponses++;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\t\t\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\t\t\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\t\t\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\t\t\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\t\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t.then((rows)=>{\r\n\t\t\treturn rows[0].getComponent();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\t\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn Promise.resolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\t\r\n\t}\r\n\t\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\r\n\t\t\r\n\t\tthis.columnManager.setColumns(definition);\r\n\t}\r\n\t\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\t\r\n\tgetColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\t\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field); \r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\t\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from),\r\n\t\ttoColumn = this.columnManager.findColumn(to);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.columnManager.redraw(force);\r\n\t\tthis.rowManager.redraw(force);\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\t\r\n\t//////////////////// Event Bus ///////////////////\r\n\t\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\t\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\t\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\t\t\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t//////////////////// Alerts ///////////////////\r\n\r\n\talert(contents, type){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.alertManager.alert(contents, type);\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.alertManager.clear();\r\n\t}\r\n\t\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\t\t\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\t\t\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;\r\n","export default {}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {\r\n\tmethod: \"GET\",\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nexport default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\r\n\t\t\tvar output = generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.config = {}; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\t\t\r\n\t\tthis.loaderPromise = false;\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\t\t\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\t\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\t\t\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\r\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\t\r\n\trequestParams(data, config, silent, params){\r\n\t\tvar ajaxParams = this.table.options.ajaxParams;\r\n\t\t\r\n\t\tif(ajaxParams){\r\n\t\t\tif(typeof ajaxParams === \"function\"){\r\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tparams = Object.assign(params, ajaxParams);\r\n\t\t}\t\t\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\t\r\n\trequestData(url, params, config, silent, previousData){\r\n\t\tvar ajaxConfig;\r\n\t\t\r\n\t\tif(!previousData && this.requestDataCheck(url)){\r\n\t\t\tif(url){\r\n\t\t\t\tthis.setUrl(url);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tajaxConfig = this.generateConfig(config);\r\n\t\t\t\r\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetDefaultConfig(config = {}){\r\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(this.config, config);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//load config object\r\n\tgenerateConfig(config = {}){\r\n\t\tvar ajaxConfig = Object.assign({}, this.config)\r\n\t\t\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tajaxConfig.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(ajaxConfig, config);\r\n\t\t}\r\n\t\t\r\n\t\treturn ajaxConfig;\r\n\t}\r\n\t\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\t\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\t\r\n\t//send ajax request\r\n\tsendRequest(url, params, config){\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\r\n\t\t\treturn this.loaderPromise(url, config, params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tif(this.topRow){\r\n\t\t\trows.unshift(this.topRow);\r\n\t\t}\r\n\r\n\t\tif(this.botRow){\r\n\t\t\trows.push(this.botRow);\r\n\t\t}\r\n\t\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRowsRefresh(){\r\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\r\n\t\t\tthis.recalcAll();\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.footerRemove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.footerPrepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(row);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeElementField(){\r\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\r\n\r\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\t}\r\n\t\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tvar field = cell.column.getField();\r\n\r\n\t\tif(field === this.elementField){\r\n\t\t\tthis.layoutRow(cell.row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowExpanded(row){\r\n\t\treturn row.modules.dataTree.open;\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\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 }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\r\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}});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","export default function (list, options, setFileContents) {\r\n\tconst fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tconst item = {};\r\n\r\n\t\tswitch (row.type) {\r\n\t\t\tcase \"header\":\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\t\tif (col) {\r\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tfileContents.push(JSON.stringify(item));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\r\n};","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\nimport jsonLines from './downloaders/jsonLines.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tjsonLines:jsonLines,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\tif(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n\r\n if(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\r\n\t\tif(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import maskInput from './inputMask.js';\r\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\r\n\r\nexport default class Edit{\r\n constructor(editor, cell, onRendered, success, cancel, editorParams){\r\n this.edit = editor;\r\n this.table = editor.table;\r\n this.cell = cell;\r\n this.params = this._initializeParams(editorParams);\r\n \r\n this.data = [];\r\n this.displayItems = [];\r\n this.currentItems = [];\r\n this.focusedItem = null;\r\n \r\n this.input = this._createInputElement();\r\n this.listEl = this._createListElement();\r\n \r\n this.initialValues = null; \r\n \r\n this.isFilter = !cell._getSelf;\r\n \r\n this.filterTimeout = null;\r\n this.filtered = false;\r\n this.typing = false;\r\n \r\n this.values = []; \r\n this.popup = null; \r\n \r\n this.listIteration = 0;\r\n \r\n this.blurable = true;\r\n \r\n this.actions = {\r\n success:success,\r\n cancel:cancel\r\n }\r\n \r\n this._deprecationCheck();\r\n this._initializeValue();\r\n \r\n onRendered(this._onRendered.bind(this));\r\n }\r\n \r\n _deprecationCheck(){\r\n if(this.params.listItemFormatter){\r\n console.warn(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.sortValuesList){\r\n console.warn(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.searchFunc){\r\n console.warn(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.searchingPlaceholder){\r\n console.warn(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n }\r\n \r\n _initializeValue(){\r\n var initialValue = this.cell.getValue();\r\n \r\n if(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\r\n initialValue = this.params.defaultValue;\r\n }\r\n \r\n this.initialValues = this.params.multiselect ? initialValue : [initialValue];\r\n \r\n if(this.isFilter){\r\n this.input.value = this.initialValues.join(\",\");\r\n this.headerFilterInitialListGen(); \r\n }\r\n }\r\n \r\n _onRendered(){\r\n var cellEl = this.cell.getElement();\r\n \r\n function clickStop(e){\r\n e.stopPropagation();\r\n }\r\n \r\n this.input.style.height = \"100%\";\r\n this.input.focus({preventScroll: true});\r\n \r\n \r\n cellEl.addEventListener(\"click\", clickStop);\r\n \r\n setTimeout(() => {\r\n cellEl.removeEventListener(\"click\", clickStop);\r\n }, 1000)\r\n }\r\n \r\n _createListElement(){\r\n var listEl = document.createElement(\"div\");\r\n listEl.classList.add(\"tabulator-edit-list\");\r\n \r\n listEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\r\n listEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this))\r\n \r\n return listEl;\r\n }\r\n \r\n _setListWidth(){\r\n var element = this.isFilter ? this.input : this.cell.getElement();\r\n \r\n this.listEl.style.minWidth = element.offsetWidth + \"px\";\r\n \r\n if(this.params.maxWidth){\r\n if(this.params.maxWidth === true){\r\n this.listEl.style.maxWidth = element.offsetWidth + \"px\";\r\n }else if(typeof this.params.maxWidth === \"number\"){\r\n this.listEl.style.maxWidth = this.params.maxWidth + \"px\";\r\n }else{\r\n this.listEl.style.maxWidth = this.params.maxWidth;\r\n }\r\n }\r\n \r\n }\r\n \r\n _createInputElement(){\r\n var attribs = this.params.elementAttributes;\r\n var input = document.createElement(\"input\");\r\n \r\n input.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\r\n \r\n input.style.padding = \"4px\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n \r\n if(!this.params.autocomplete){\r\n input.style.cursor = \"default\";\r\n input.style.caretColor = \"transparent\";\r\n // input.readOnly = (this.edit.currentCell != false);\r\n }\r\n \r\n if(attribs && typeof attribs == \"object\"){\r\n for (let key in attribs){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + attribs[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, attribs[key]);\r\n }\r\n }\r\n }\r\n \r\n if(this.params.mask){\r\n maskInput(input, this.params);\r\n }\r\n \r\n this._bindInputEvents(input);\r\n \r\n return input;\r\n }\r\n \r\n _initializeParams(params){\r\n var valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\r\n valueCheck;\r\n\r\n params = Object.assign({}, params);\r\n \r\n params.verticalNavigation = params.verticalNavigation || \"editor\";\r\n params.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\r\n params.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\r\n params.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\r\n \r\n params.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\r\n\r\n valueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\r\n\r\n if(!valueCheck){\r\n console.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\")\r\n }else if(valueCheck > 1){\r\n console.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\")\r\n }\r\n \r\n if(params.autocomplete){\r\n if(params.multiselect){\r\n params.multiselect = false;\r\n console.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\")\r\n }\r\n }else{\r\n if(params.freetext){\r\n params.freetext = false;\r\n console.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.filterFunc){\r\n params.filterFunc = false;\r\n console.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.filterRemote){\r\n params.filterRemote = false;\r\n console.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.mask){\r\n params.mask = false;\r\n console.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.allowEmpty){\r\n params.allowEmpty = false;\r\n console.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.listOnEmpty){\r\n params.listOnEmpty = false;\r\n console.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\r\n }\r\n }\r\n \r\n if(params.filterRemote && !(typeof params.valuesLookup === \"function\" || typeof params.valuesURL)){\r\n params.filterRemote = false;\r\n console.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\r\n }\r\n return params;\r\n }\r\n //////////////////////////////////////\r\n ////////// Event Handling ////////////\r\n //////////////////////////////////////\r\n \r\n _bindInputEvents(input){\r\n input.addEventListener(\"focus\", this._inputFocus.bind(this))\r\n input.addEventListener(\"click\", this._inputClick.bind(this))\r\n input.addEventListener(\"blur\", this._inputBlur.bind(this))\r\n input.addEventListener(\"keydown\", this._inputKeyDown.bind(this))\r\n input.addEventListener(\"search\", this._inputSearch.bind(this))\r\n \r\n if(this.params.autocomplete){\r\n input.addEventListener(\"keyup\", this._inputKeyUp.bind(this))\r\n }\r\n }\r\n \r\n \r\n _inputFocus(e){\r\n this.rebuildOptionsList();\r\n }\r\n \r\n _filter(){\r\n if(this.params.filterRemote){\r\n clearTimeout(this.filterTimeout);\r\n \r\n this.filterTimeout = setTimeout(() => {\r\n this.rebuildOptionsList();\r\n }, this.params.filterDelay);\r\n }else{\r\n this._filterList();\r\n }\r\n }\r\n \r\n _inputClick(e){\r\n e.stopPropagation();\r\n }\r\n \r\n _inputBlur(e){\r\n if(this.blurable && this.popup){\r\n this.popup.hide();\r\n }\r\n }\r\n \r\n _inputSearch(){\r\n this._clearChoices();\r\n }\r\n \r\n _inputKeyDown(e){\r\n switch(e.keyCode){\r\n \r\n case 38: //up arrow\r\n this._keyUp(e);\r\n break\r\n \r\n case 40: //down arrow\r\n this._keyDown(e);\r\n break;\r\n \r\n case 37: //left arrow\r\n case 39: //right arrow\r\n this._keySide(e);\r\n break;\r\n \r\n case 13: //enter\r\n this._keyEnter();\r\n break;\r\n \r\n case 27: //escape\r\n this._keyEsc();\r\n break;\r\n \r\n case 36: //home\r\n case 35: //end\r\n this._keyHomeEnd(e);\r\n break;\r\n \r\n case 9: //tab\r\n break;\r\n \r\n default:\r\n this._keySelectLetter(e);\r\n }\r\n }\r\n \r\n _inputKeyUp(e){\r\n switch(e.keyCode){\r\n case 38: //up arrow\r\n case 37: //left arrow\r\n case 39: //up arrow\r\n case 40: //right arrow\r\n case 13: //enter\r\n case 27: //escape\r\n break;\r\n \r\n default:\r\n this._keyAutoCompLetter(e);\r\n }\r\n }\r\n \r\n _preventBlur(){\r\n this.blurable = false;\r\n \r\n setTimeout(function(){\r\n this.blurable = true;\r\n }, 10);\r\n }\r\n \r\n //////////////////////////////////////\r\n //////// Keyboard Navigation /////////\r\n //////////////////////////////////////\r\n \r\n _keyUp(e){\r\n var index = this.displayItems.indexOf(this.focusedItem);\r\n \r\n if(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n \r\n if(index > 0){\r\n this._focusItem(this.displayItems[index - 1]);\r\n }\r\n }\r\n }\r\n \r\n _keyDown(e){\r\n var index = this.displayItems.indexOf(this.focusedItem);\r\n \r\n if(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n \r\n if(index < this.displayItems.length - 1){\r\n if(index == -1){\r\n this._focusItem(this.displayItems[0]);\r\n }else{\r\n this._focusItem(this.displayItems[index + 1]);\r\n }\r\n }\r\n }\r\n }\r\n \r\n _keySide(e){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n \r\n _keyEnter(e){\r\n if(this.focusedItem){\r\n this._chooseItem(this.focusedItem);\r\n }else{\r\n this._cancel();\r\n }\r\n }\r\n \r\n _keyEsc(e){\r\n this._cancel();\r\n }\r\n \r\n _keyHomeEnd(e){\r\n if(this.params.autocomplete){\r\n //prevent table navigation while using input element\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n \r\n _keySelectLetter(e){\r\n if(!this.params.autocomplete){\r\n // if(this.edit.currentCell === false){\r\n e.preventDefault();\r\n // }\r\n \r\n if(e.keyCode >= 38 && e.keyCode <= 90){\r\n this._scrollToValue(e.keyCode);\r\n }\r\n }\r\n }\r\n \r\n _keyAutoCompLetter(e){\r\n this._filter();\r\n this.typing = true;\r\n }\r\n \r\n \r\n _scrollToValue(char){\r\n clearTimeout(this.filterTimeout);\r\n \r\n var character = String.fromCharCode(char).toLowerCase();\r\n this.filterTerm += character.toLowerCase();\r\n \r\n var match = this.displayItems.find((item) => {\r\n return typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\r\n });\r\n \r\n if(match){\r\n this._focusItem(match);\r\n }\r\n \r\n this.filterTimeout = setTimeout(() => {\r\n this.filterTerm = \"\";\r\n }, 800)\r\n }\r\n \r\n _focusItem(item){\r\n if(this.focusedItem && this.focusedItem.element){\r\n this.focusedItem.element.classList.remove(\"focused\");\r\n }\r\n \r\n this.focusedItem = item;\r\n \r\n if(item && item.element){\r\n item.element.classList.add(\"focused\");\r\n item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n }\r\n }\r\n \r\n \r\n //////////////////////////////////////\r\n /////// Data List Generation /////////\r\n //////////////////////////////////////\r\n headerFilterInitialListGen(){\r\n this._generateOptions(true);\r\n }\r\n \r\n rebuildOptionsList(){\r\n this._generateOptions()\r\n .then(this._sortOptions.bind(this))\r\n .then(this._buildList.bind(this))\r\n .then(this._showList.bind(this))\r\n .catch((e) => {\r\n if(!Number.isInteger(e)){\r\n console.error(\"List generation error\", e);\r\n }\r\n })\r\n }\r\n \r\n _filterList(){\r\n this._buildList(this._filterOptions());\r\n this._showList();\r\n }\r\n \r\n _generateOptions(silent){\r\n var values = [];\r\n var itteration = ++ this.listIteration;\r\n \r\n this.filtered = false;\r\n \r\n if(this.params.values){\r\n values = this.params.values;\r\n }else if (this.params.valuesURL){\r\n values = this._ajaxRequest(this.params.valuesURL, this.input.value);\r\n }else{\r\n if(typeof this.params.valuesLookup === \"function\"){\r\n values = this.params.valuesLookup(cell, this.input.value);\r\n }else if(this.params.valuesLookup){\r\n values = this._uniqueColumnValues(this.params.valuesLookupField);\r\n }\r\n }\r\n \r\n if(values instanceof Promise){\r\n if(!silent){\r\n this._addPlaceholder(this.params.placeholderLoading);\r\n }\r\n \r\n return values.then()\r\n .then((responseValues) => {\r\n if(this.listIteration === itteration){\r\n return this._parseList(responseValues);\r\n }else{\r\n return Promise.reject(itteration);\r\n }\r\n });\r\n }else{\r\n return Promise.resolve(this._parseList(values))\r\n }\r\n }\r\n \r\n _addPlaceholder(contents){\r\n var placeholder = document.createElement(\"div\");\r\n \r\n if(typeof contents === \"function\"){\r\n contents = contents(cell.getComponent(), this.listEl);\r\n }\r\n \r\n if(contents){\r\n this._clearList();\r\n \r\n if(contents instanceof HTMLElement){\r\n placeholder = contents;\r\n }else{\r\n placeholder.classList.add(\"tabulator-edit-list-placeholder\")\r\n placeholder.innerHTML = contents;\r\n }\r\n \r\n this.listEl.appendChild(placeholder);\r\n \r\n this._showList();\r\n }\r\n }\r\n \r\n _ajaxRequest(url, term){\r\n var params = this.params.filterRemote ? {term:term} : {};\r\n url = urlBuilder(url, {}, params);\r\n \r\n return fetch(url)\r\n .then((response)=>{\r\n if(response.ok) {\r\n return response.json()\r\n .catch((error)=>{\r\n console.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\r\n return Promise.reject(error);\r\n });\r\n }else{\r\n console.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n return Promise.reject(response);\r\n }\r\n })\r\n .catch((error)=>{\r\n console.error(\"List Ajax Load Error - Connection Error: \", error);\r\n return Promise.reject(error);\r\n });\r\n }\r\n \r\n _uniqueColumnValues(field){\r\n var output = {},\r\n data = this.table.getData(this.params.valuesLookup),\r\n column;\r\n \r\n if(field){\r\n column = this.table.columnManager.getColumnByField(field);\r\n }else{\r\n column = this.cell.getColumn()._getSelf();\r\n }\r\n \r\n if(column){\r\n data.forEach((row) => {\r\n var val = column.getFieldValue(row);\r\n \r\n if(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n output[val] = true;\r\n }\r\n });\r\n }else{\r\n console.warn(\"unable to find matching column to create select lookup list:\", field);\r\n output = [];\r\n }\r\n \r\n return Object.keys(output);\r\n }\r\n \r\n \r\n _parseList(inputValues){\r\n var data = [];\r\n \r\n if(!Array.isArray(inputValues)){\r\n inputValues = Object.entries(inputValues).map(([key, value]) => {\r\n return {\r\n label:value,\r\n value:key,\r\n };\r\n });\r\n }\r\n \r\n inputValues.forEach((value) => {\r\n if(typeof value !== \"object\"){\r\n value = {\r\n label:value,\r\n value:value,\r\n };\r\n }\r\n \r\n this._parseListItem(value, data, 0);\r\n });\r\n \r\n this.data = data;\r\n \r\n return data; \r\n }\r\n \r\n _parseListItem(option, data, level){\r\n var item = {};\r\n \r\n if(option.options){\r\n item = this._parseListGroup(option, level + 1);\r\n }else{\r\n item = {\r\n label:option.label,\r\n value:option.value,\r\n itemParams:option.itemParams,\r\n elementAttributes: option.elementAttributes,\r\n element:false,\r\n selected:false,\r\n visible:true,\r\n level:level,\r\n original:option,\r\n };\r\n \r\n if(this.initialValues && this.initialValues.indexOf(option.value) > -1){\r\n this._chooseItem(item, true);\r\n }\r\n }\r\n \r\n data.push(item);\r\n }\r\n \r\n _parseListGroup(option, level){\r\n var item = {\r\n label:option.label,\r\n group:true,\r\n itemParams:option.itemParams,\r\n elementAttributes:option.elementAttributes,\r\n element:false,\r\n visible:true,\r\n level:level,\r\n options:[],\r\n original:option,\r\n };\r\n \r\n option.options.forEach((child) => {\r\n this._parseListItem(child, item.options, level);\r\n });\r\n \r\n return item;\r\n }\r\n \r\n _sortOptions(options){\r\n var sorter;\r\n \r\n if(this.params.sort){\r\n sorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\r\n \r\n this._sortGroup(sorter, options);\r\n }\r\n \r\n return options;\r\n }\r\n \r\n _sortGroup(sorter, options){\r\n options.sort((a,b) => {\r\n return sorter(a.label, b.label, a.value, b.value, a.original, b.original);\r\n });\r\n \r\n options.forEach((option) => {\r\n if(option.group){\r\n this._sortGroup(sorter, option.options);\r\n }\r\n })\r\n }\r\n \r\n _defaultSortFunction(as, bs){\r\n var a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n var emptyAlign = 0;\r\n \r\n if(this.params.sort === \"desc\"){\r\n [as, bs] = [bs, as];\r\n }\r\n \r\n //handle empty values\r\n if(!as && as!== 0){\r\n emptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n }else if(!bs && bs!== 0){\r\n emptyAlign = 1;\r\n }else{\r\n if(isFinite(as) && isFinite(bs)) return as - bs;\r\n a = String(as).toLowerCase();\r\n b = String(bs).toLowerCase();\r\n if(a === b) return 0;\r\n if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n a = a.match(rx);\r\n b = b.match(rx);\r\n L = a.length > b.length ? b.length : a.length;\r\n while(i < L){\r\n a1= a[i];\r\n b1= b[i++];\r\n if(a1 !== b1){\r\n if(isFinite(a1) && isFinite(b1)){\r\n if(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n if(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n return a1 - b1;\r\n }\r\n else return a1 > b1 ? 1 : -1;\r\n }\r\n }\r\n \r\n return a.length > b.length;\r\n }\r\n \r\n return emptyAlign;\r\n }\r\n \r\n _filterOptions(){\r\n var filterFunc = this.params.filterFunc || this._defaultFilterFunc;\r\n var term = this.input.value;\r\n var results = [];\r\n \r\n if(term){\r\n this.filtered = true;\r\n \r\n this.data.forEach((item) => {\r\n this._filterItem(filterFunc, term, item);\r\n });\r\n }else{\r\n this.filtered = false;\r\n }\r\n \r\n return this.data;\r\n }\r\n \r\n _filterItem(func, term, item){\r\n var matches = false;\r\n \r\n if(!item.group){\r\n item.visible = func(term, item.label, item.value, item.original);\r\n }else{\r\n item.options.forEach((option) => {\r\n if(this._filterItem(func, term, option)){\r\n matches = true;\r\n }\r\n });\r\n \r\n item.visible = matches;\r\n }\r\n \r\n return item.visible;\r\n }\r\n \r\n _defaultFilterFunc(term, label, value, item){\r\n var term = String(term).toLowerCase();\r\n \r\n if(label !== null || typeof label !== \"undefined\"){\r\n if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase(term).indexOf() > -1){\r\n return true;\r\n }\r\n }\r\n \r\n return false;\r\n }\r\n \r\n //////////////////////////////////////\r\n /////////// Display List /////////////\r\n //////////////////////////////////////\r\n \r\n _clearList(){\r\n while(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\r\n \r\n this.displayItems = [];\r\n }\r\n \r\n _buildList(data){\r\n this._clearList();\r\n \r\n data.forEach((option) => {\r\n this._buildItem(option);\r\n });\r\n \r\n if(!this.displayItems.length){\r\n this._addPlaceholder(this.params.placeholderEmpty);\r\n } \r\n }\r\n \r\n _buildItem(item){\r\n var el = item.element,\r\n contents;\r\n \r\n if(!this.filtered || item.visible){\r\n \r\n if(!el){\r\n el = document.createElement(\"div\");\r\n el.tabIndex = 0;\r\n \r\n contents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\r\n \r\n if(contents instanceof HTMLElement){\r\n el.appendChild(contents)\r\n }else{\r\n el.innerHTML = contents;\r\n }\r\n \r\n if(item.group){\r\n el.classList.add(\"tabulator-edit-list-group\");\r\n }else{\r\n el.classList.add(\"tabulator-edit-list-item\");\r\n }\r\n \r\n el.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\r\n \r\n if(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n for (let key in item.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n el.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n }else{\r\n el.setAttribute(key, item.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n \r\n if(item.group){\r\n el.addEventListener(\"click\", this._groupClick.bind(this, item));\r\n }else{\r\n el.addEventListener(\"click\", this._itemClick.bind(this, item));\r\n }\r\n \r\n el.addEventListener(\"mousedown\", this._preventBlur.bind(this));\r\n \r\n item.element = el;\r\n }\r\n \r\n this._styleItem(item);\r\n \r\n this.listEl.appendChild(el);\r\n \r\n if(item.group){\r\n item.options.forEach((option) => {\r\n this._buildItem(option);\r\n });\r\n }else{\r\n this.displayItems.push(item);\r\n }\r\n }\r\n }\r\n \r\n _showList(){\r\n var startVis = this.popup && this.popup.isVisible();\r\n \r\n if(this.input.parentNode){\r\n if(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\r\n if(this.popup){\r\n this.popup.hide(true);\r\n return;\r\n }\r\n }\r\n \r\n this._setListWidth();\r\n \r\n if(!this.popup){\r\n this.popup = this.edit.popup(this.listEl);\r\n }\r\n \r\n this.popup.show(this.cell.getElement(), \"bottom\")\r\n \r\n if(!startVis){\r\n this.popup.hideOnBlur(this._resolveValue.bind(this, true));\r\n }\r\n }\r\n }\r\n \r\n _styleItem(item){\r\n if(item && item.element){\r\n if(item.selected){\r\n item.element.classList.add(\"active\");\r\n }else{\r\n item.element.classList.remove(\"active\");\r\n }\r\n }\r\n }\r\n \r\n //////////////////////////////////////\r\n ///////// User Interaction ///////////\r\n //////////////////////////////////////\r\n \r\n _itemClick(item, e){\r\n e.stopPropagation();\r\n \r\n this._chooseItem(item);\r\n }\r\n \r\n _groupClick(item, e){\r\n e.stopPropagation();\r\n }\r\n \r\n \r\n //////////////////////////////////////\r\n ////// Current Item Management ///////\r\n //////////////////////////////////////\r\n \r\n _cancel(){\r\n this.popup.hide(true);\r\n this.actions.cancel();\r\n }\r\n \r\n _clearChoices(){\r\n this.typing = true;\r\n \r\n this.currentItems.forEach((item) => {\r\n item.selected = false;\r\n this._styleItem(item);\r\n });\r\n \r\n this.currentItems = [];\r\n \r\n this.focusedItem = null;\r\n }\r\n \r\n _chooseItem(item, silent){\r\n var index;\r\n \r\n this.typing = false;\r\n \r\n if(this.params.multiselect){\r\n index = this.currentItems.indexOf(item);\r\n \r\n if(index > -1){\r\n this.currentItems.splice(index, 1);\r\n item.selected = false;\r\n }else{\r\n this.currentItems.push(item);\r\n item.selected = true;\r\n }\r\n \r\n this.input.value = this.currentItems.map(item => item.label).join(\",\");\r\n \r\n this._styleItem(item);\r\n \r\n }else{\r\n this.currentItems = [item];\r\n item.selected = true;\r\n \r\n this.input.value = item.label;\r\n \r\n this._styleItem(item);\r\n \r\n if(!silent){\r\n this._resolveValue();\r\n }\r\n }\r\n \r\n this._focusItem(item);\r\n }\r\n \r\n _resolveValue(blur){\r\n var output, initialValue;\r\n \r\n this.popup.hide(true);\r\n \r\n if(this.params.multiselect){\r\n output = this.currentItems.map(item => item.value);\r\n }else{\r\n if(blur && this.params.autocomplete && this.typing){\r\n if(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\r\n output = this.input.value;\r\n }else{\r\n this.actions.cancel();\r\n return;\r\n }\r\n }else{\r\n if(this.currentItems[0]){\r\n output = this.currentItems[0].value;\r\n }else{\r\n initialValue = this.initialValues[0];\r\n \r\n if(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\r\n output = initialValue;\r\n }else{\r\n output = this.params.emptyValue;\r\n }\r\n }\r\n \r\n }\r\n }\r\n \r\n if(output === \"\"){\r\n output = this.params.emptyValue;\r\n }\r\n \r\n this.actions.success(output);\r\n \r\n if(this.isFilter){\r\n this.initialValues = output && !Array.isArray[output] ? [output] : output;\r\n }\r\n }\r\n \r\n}","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\r\n\t console.warn(\"The select editor has been deprecated, please use the new list editor\");\r\n\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\r\n\tconsole.warn(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\r\n\r\n\teditorParams.autocomplete = true;\r\n\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false,\r\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\r\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tvar checkedValue = input.checked;\r\n\r\n\t\tif(trueValueSet && checkedValue){\r\n\t\t\tcheckedValue = editorParams.trueValue;\r\n\t\t}else if(falseValueSet && !checkedValue){\r\n\t\t\tcheckedValue = editorParams.falseValue;\r\n\t\t}else{\r\n\t\t\tcheckedValue = checkedValue;\r\n\t\t}\r\n\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn checkedValue;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn checkedValue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn checkedValue;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport list from './editors/list.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tlist:list,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(cell, e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.table.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(cell = this.currentCell, e){\r\n\t\tvar nextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(cell = this.currentCell, e){\r\n\t\tvar nextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successful value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\treturn valid === true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;\r\n","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\r\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\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\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\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\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\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\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.styleCells[index] || styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.styleCells[index] || styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\t\tthis.tableInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.tableInitialized = true;\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\tcolumn.modules.filter.value = initialValue;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\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);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft + parseInt(this.table.columnManager.element.style.marginLeft);\r\n\r\n\t\t\t\t\tif(left !== headerPos){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.tableInitialized){\r\n\t\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\t\tthis.reloadData();\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tsign = \"\",\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tif(floatVal < 0){\r\n\t\tfloatVal = Math.abs(floatVal);\r\n\t\tsign = negativeSign;\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\tif (formatterParams.thousand !== false) {\r\n\t\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\t\twhile (rgx.test(integer)){\r\n\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t\t}\r\n\t}\r\n\r\n\treturn after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tfunction labelTraverse(path, data){\r\n\t\tvar item = path.shift(),\r\n\t\tvalue = data[item];\r\n\t\t\r\n\t\tif(path.length && typeof value === \"object\"){\r\n\t\t\treturn labelTraverse(path, value);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime;\r\n\r\n\t\tif(DT.isDateTime(value)){\r\n\t\t\t newDatetime = value;\r\n\t\t }else if(inputFormat === \"iso\"){\r\n\t\t\t newDatetime = DT.fromISO(String(value));\r\n\t\t }else{\r\n\t\t\t newDatetime = DT.fromFormat(String(value), inputFormat);\r\n\t\t }\r\n\r\n\t\tif(newDatetime.isValid){\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\t\t\tif(invalid === true || !value){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime;\r\n\r\n\t\tif(DT.isDateTime(value)){\r\n\t\t\t newDatetime = value;\r\n\t\t }else if(inputFormat === \"iso\"){\r\n\t\t\t newDatetime = DT.fromISO(String(value));\r\n\t\t }else{\r\n\t\t\t newDatetime = DT.fromFormat(String(value), inputFormat);\r\n\t\t }\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1 || \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\tvar blocked = false;\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\r\n\t\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\t\tif(!blocked){\r\n\t\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tblocked = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\tblocked = true;\r\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\t\tthis.blocked = true;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\t\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\r\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.reinitializeColumns.bind(this));\r\n\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\r\n\t}\r\n\t\r\n\tblockLayout(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\t\r\n\tunblockLayout(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n\t\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\r\n\treinitializeColumns(){\r\n\t\tthis.reset();\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\t\t\r\n\t\tif(!column.isGroup){\r\n\t\t\t\r\n\t\t\tif(this.frozenCheck(column)){\r\n\t\t\t\t\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\t\t\t\t\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.active = true;\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfrozenCheck(column){\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\t\t\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\t\t\t\r\n\t\t\tthis.calcMargins(true);\r\n\t\t\t\r\n\t\t\tthis.layoutColumnPosition();\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t//calculate margins for rows\r\n\tcalcMargins(scroll){\r\n\t\t\r\n\t\tif(!scroll){\r\n\t\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\t\t\t\r\n\t\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\t\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\t\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\t\tvar leftParents = [];\r\n\t\t\r\n\t\tvar leftMargin = 0;\r\n\t\tvar rightMargin = 0;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\t\r\n\t\t\tcolumn.modules.frozen.margin = (leftMargin + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tleftMargin += column.getWidth();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\trightMargin += column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - rightMargin) + \"px\";\r\n\t\t\t\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\t\r\n\t//layout columns appropriately\r\n\tlayout(){\r\n\t\tvar visibleRows = [],\r\n\t\totherRows = [];\r\n\r\n\t\tif(this.active && !this.blocked){\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition();\r\n\r\n\t\t\tvisibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t\totherRows = this.table.rowManager.getDisplayRows().filter(row => !visibleRows.includes(row));\r\n\r\n\t\t\totherRows.forEach((row) =>{\r\n\t\t\t\trow.deinitialize();\r\n\t\t\t});\r\n\r\n\t\t\tvisibleRows.forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutRow(row){\r\n\t\t// console.trace(\"row\")\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\t\t\r\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\r\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\r\n\t\t}\r\n\t\t\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tlayoutElement(element, column){\r\n\t\t\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\t\t\t\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\t\t\t\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\t\t\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trows.push(row);\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\t\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.element = false;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\t\t\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\t\t\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\tif(row.modules){\r\n\t\t\t\t\tdelete row.modules.group;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.arrowElement = false;\r\n\t\tthis.elementContents = false;\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\t\t\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\taddBindings(){\r\n\t\tvar toggleElement;\r\n\t\t\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\t\t\t\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\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);\r\n\t\t\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\t\r\n\t_addRowToGroup(row){\r\n\t\t\r\n\t\tvar level = this.level + 1;\r\n\t\t\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\t\t\t\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\t\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\t\t\r\n\t\trow.updateData(data);\r\n\t\t\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\t\t\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\trow.modules.group = this;\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\t\r\n\tscrollHeader(left){\r\n\t\tif(this.arrowElement){\r\n\t\t\tthis.arrowElement.style.marginLeft = left;\r\n\t\t\t\r\n\t\t\tthis.groupList.forEach(function(child){\r\n\t\t\t\tchild.scrollHeader(left);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowIndex(row){}\r\n\t\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\t\t\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\t\t\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\t\t\t\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\t\t\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\t\t\t\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\toutput.push(this);\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\t\t\t\t\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\t\t\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\t\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\t\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\t\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tvar prev = this.generateElement();\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\t\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tif(typeof this.visible == \"function\"){\r\n\t\t\t\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\t\t\t\t\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\t\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\t\r\n\t////////////// Standard Row Functions //////////////\r\n\t\r\n\tgetElement(){\r\n\t\treturn this.elementContents ? this.element : this.generateElement();\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.addBindings = false;\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\t\t\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\t// this.addBindings();\r\n\t\t\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\t\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\t\t\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\t\r\n\treinitializeHeight(){}\r\n\t\r\n\tcalcHeight(){}\r\n\t\r\n\tsetCellHeight(){}\r\n\t\r\n\tclearCellHeight(){}\r\n\t\r\n\tdeinitializeHeight(){}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureGroupSetup(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.initialize();\r\n\t\t}else{\r\n\t\t\tthis.configureGroupSetup();\r\n\t\t}\r\n\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.configureGroupSetup();\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\r\n\r\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList = [];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Row from '../../core/row/Row.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","import Module from '../../core/Module.js';\r\nimport Column from '../../core/column/Column.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\r\n\t\t\tif(this.table.originalElement.childNodes.length){\r\n\t\t\t\tthis.parseTable();\r\n\t\t\t}else{\r\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.\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.originalElement,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for Tabulator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for Tabulator inline options\r\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","function csvImporter(input){\r\n var data = [],\r\n row = 0, \r\n col = 0,\r\n inQuote = false;\r\n \r\n //Iterate over each character\r\n for (let index = 0; index < input.length; index++) {\r\n let char = input[index], \r\n nextChar = input[index+1]; \r\n \r\n //Initialize empty row\r\n if(!data[row]){\r\n data[row] = [];\r\n }\r\n\r\n //Initialize empty column\r\n if(!data[row][col]){\r\n data[row][col] = \"\";\r\n }\r\n \r\n //Handle quotation mark inside string\r\n if (char == '\"' && inQuote && nextChar == '\"') { \r\n data[row][col] += char; \r\n index++;\r\n continue; \r\n }\r\n \r\n //Begin / End Quote\r\n if (char == '\"') { \r\n inQuote = !inQuote;\r\n continue;\r\n }\r\n \r\n //Next column (if not in quote)\r\n if (char == ',' && !inQuote) { \r\n col++;\r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CRLF) \r\n if (char == '\\r' && nextChar == '\\n' && !inQuote) { \r\n col = 0; \r\n row++; \r\n index++; \r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CR or LF) \r\n if ((char == '\\r' || char == '\\n') && !inQuote) { \r\n col = 0;\r\n row++;\r\n continue; \r\n }\r\n\r\n //Normal Character, append to column\r\n data[row][col] += char;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport default csvImporter;","export default function(input){\r\n try {\r\n return JSON.parse(input);\r\n } catch(e) {\r\n console.warn(\"JSON Import Error - File contents is invalid JSON\", e);\r\n return Promise.reject();\r\n }\r\n}","import csv from './importers/csv.js';\r\nimport json from './importers/json.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultImporters from './defaults/importers.js';\r\n\r\nclass Import extends Module{\r\n \r\n constructor(table){\r\n super(table);\r\n \r\n this.registerTableOption(\"importFormat\");\r\n this.registerTableOption(\"importReader\", \"text\");\r\n }\r\n \r\n initialize(){\r\n this.registerTableFunction(\"import\", this.importFromFile.bind(this));\r\n\r\n if(this.table.options.importFormat){\r\n this.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\r\n this.subscribe(\"data-load\", this.loadData.bind(this), 10);\r\n }\r\n }\r\n\r\n loadDataCheck(data){\r\n return typeof data === \"string\";\r\n }\r\n\r\n loadData(data, params, config, silent, previousData){\r\n return this.importData(this.lookupImporter(), data)\r\n .then(this.structureData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import data\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n\r\n lookupImporter(importFormat){\r\n var importer;\r\n \r\n if(!importFormat){\r\n importFormat = this.table.options.importFormat;\r\n }\r\n \r\n if(typeof importFormat === \"string\"){\r\n importer = Import.importers[importFormat];\r\n }else{\r\n importer = importFormat;\r\n }\r\n\r\n if(!importer){\r\n console.error(\"Import Error - Importer not found:\", importFormat);\r\n }\r\n \r\n return importer;\r\n }\r\n \r\n importFromFile(importFormat, extension){\r\n var importer = this.lookupImporter(importFormat);\r\n \r\n if(importer){\r\n return this.pickFile(extension)\r\n .then(this.importData.bind(this, importer))\r\n .then(this.structureData.bind(this))\r\n .then(this.setData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import file\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n }\r\n \r\n pickFile(extensions){\r\n return new Promise((resolve, reject) => {\r\n var input = document.createElement(\"input\");\r\n input.type = \"file\";\r\n input.accept = extensions;\r\n \r\n input.addEventListener(\"change\", (e) => {\r\n var file = input.files[0],\r\n reader = new FileReader(),\r\n data;\r\n \r\n switch(this.table.options.importReader){\r\n case \"buffer\":\r\n reader.readAsArrayBuffer(file);\r\n break;\r\n\r\n case \"binary\":\r\n reader.readAsBinaryString(file);\r\n break;\r\n\r\n case \"url\":\r\n reader.readAsDataURL(file);\r\n break;\r\n\r\n case \"text\":\r\n default:\r\n reader.readAsText(file);\r\n }\r\n \r\n reader.onload = (e) => {\r\n resolve(reader.result)\r\n };\r\n \r\n reader.onerror = (e) => {\r\n console.warn(\"File Load Error - Unable to read file\");\r\n reject();\r\n };\r\n });\r\n \r\n input.click();\r\n });\r\n }\r\n \r\n importData(importer, fileContents){\r\n var data = importer.call(this.table, fileContents);\r\n \r\n if(data instanceof Promise){\r\n return data;\r\n }else{\r\n return data ? Promise.resolve(data) : Promise.reject();\r\n }\r\n }\r\n\r\n structureData(parsedData){\r\n var data = [];\r\n \r\n if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\r\n if(this.table.options.autoColumns){\r\n data = this.structureArrayToObject(parsedData);\r\n }else{\r\n data = this.structureArrayToColumns(parsedData);\r\n }\r\n\r\n return data;\r\n }else{\r\n return parsedData;\r\n }\r\n }\r\n\r\n structureArrayToObject(parsedData){\r\n var columns = parsedData.shift();\r\n\r\n var data = parsedData.map((values) => {\r\n var row = {};\r\n\r\n columns.forEach((key, i) => {\r\n row[key] = values[i];\r\n })\r\n\r\n return row;\r\n })\r\n\r\n return data;\r\n }\r\n\r\n structureArrayToColumns(parsedData){\r\n var data = [],\r\n columns = this.table.getColumns();\r\n\r\n //remove first row if it is the column names\r\n if(columns[0] && parsedData[0][0]){\r\n if(columns[0].getDefinition().title === parsedData[0][0]){\r\n parsedData.shift();\r\n }\r\n }\r\n \r\n //convert row arrays to objects\r\n parsedData.forEach((rowData) => {\r\n var row = {};\r\n\r\n rowData.forEach((value, index) => {\r\n var column = columns[index];\r\n\r\n if(column){\r\n row[column.getField()] = value;\r\n }\r\n })\r\n\r\n data.push(row);\r\n });\r\n\r\n return data;\r\n }\r\n \r\n setData(data){\r\n return this.table.setData(data);\r\n }\r\n}\r\n\r\nImport.moduleName = \"import\";\r\n\r\n//load defaults\r\nImport.importers = defaultImporters;\r\n\r\nexport default Import;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tgroup:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\r\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\r\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 89\"],\r\n};","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings)\r\n\t\t\tObject.assign(mergedBindings, bindings)\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tbindingList.forEach((item) => {\r\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\r\n\t\t\t\t\t\t});\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","import Module from '../../core/Module.js';\r\n\r\nclass Menu extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.menuContainer = null;\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\t\r\n\t\tthis.currentComponent = null;\r\n\t\tthis.rootPopup = null;\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\r\n\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerClickMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t\t\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.deprecationCheck();\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\r\n\tdeprecationCheck(){\r\n\t\tif(typeof this.table.options.menuContainer !== \"undefined\"){\r\n\t\t\tconsole.warn(\"Use of the menuContainer option is now deprecated. Please use the popupContainer option instead\");\r\n\r\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\r\n\t\t}\r\n\t}\t\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextMenu\", \"headerClickMenu\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\r\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\r\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerMenu){\r\n\t\t\tthis.initializeColumnHeaderMenu(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\r\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\r\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderMenu(column){\r\n\t\tvar icon = column.definition.headerMenuIcon,\r\n\t\theaderMenuEl;\r\n\t\t\r\n\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\r\n\r\n\t\tif(icon){\r\n\t\t\tif(typeof icon === \"function\"){\r\n\t\t\t\ticon = icon(column.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tif(icon instanceof HTMLElement){\r\n\t\t\t\theaderMenuEl.appendChild(icon);\r\n\t\t\t}else{\r\n\t\t\t\theaderMenuEl.innerHTML = icon;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\t\t}\r\n\t\t\r\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadMenuTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuEvent(menu, e, component){\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\r\n\t\t\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\t\r\n\tloadMenu(e, component, menu, parentEl, parentPopup){\r\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\r\n\t\tmenuEl = document.createElement(\"div\"),\r\n\t\tpopup;\r\n\t\t\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\t\t\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.rootPopup){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.rootPopup){\r\n\t\t\t\tthis.rootPopup.hide();\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tpopup = parentPopup.child(menuEl);\r\n\t\t}\r\n\t\t\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\t\t\t\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\t\t\t\t\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\t\t\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.rootPopup.hide();\r\n\t\t});\r\n\t\t\r\n\t\tpopup.show(parentEl || e);\r\n\t\t\r\n\t\tif(popup === this.rootPopup){\r\n\t\t\tthis.rootPopup.hideOnBlur(() => {\r\n\t\t\t\tthis.rootPopup = null;\r\n\t\t\t\t\r\n\t\t\t\tif(this.currentComponent){\r\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\r\n\t\t\t\t\tthis.currentComponent = null;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.currentComponent = component;\r\n\r\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent())\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\t\t\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\t\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\t\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableColumns){\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\t\t\r\n\t\tif(!column.modules.frozen){\r\n\t\t\tcolEl = column.getElement();\r\n\t\t\t\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\t\t\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\t\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\t\t\t\t\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\t\t\t\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\t\t\t\t\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\t\t\t\t\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement(),\r\n\t\theaderElement = this.table.columnManager.getElement(),\r\n\t\theadersElement = this.table.columnManager.getHeadersElement();\r\n\t\t\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\t\t\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\t\t\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\t\t\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\t\t\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\t\t\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\r\n\t\t\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\t\t\t\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\t\t\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\t\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\t\t\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\t\t\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\t\t\t\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\t\t\t\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\t\t\t\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\t\t\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\t\t\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"mutateLink\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tmutateLink(cell){\r\n\t\tvar links = cell.column.definition.mutateLink;\r\n\r\n\t\tif(links){\r\n\t\t\tif(!Array.isArray(links)){\r\n\t\t\t\tlinks = [links];\r\n\t\t\t}\r\n\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tvar linkCell = cell.row.getCell(link);\r\n\r\n\t\t\t\tif(linkCell){\r\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\tvar el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\r\n\tif(totalRows){\r\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\r\n\t\t\r\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\r\n\t\t\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(ofEl);\r\n\t\tel.appendChild(totalEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}else{\r\n\t\tvalueEl.innerHTML = \" 0 \";\r\n\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}\r\n\t\r\n\treturn el;\r\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\r\n var el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\t\r\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tel.appendChild(showingEl);\r\n\tel.appendChild(valueEl);\r\n\tel.appendChild(ofEl);\r\n\tel.appendChild(totalEl);\r\n\tel.appendChild(rowsEl);\r\n\t\r\n\treturn el;\r\n};","import rows from './pageCounters/rows.js';\r\nimport pages from './pageCounters/pages.js';\r\n\r\n\r\nexport default {\r\n\trows:rows,\r\n\tpages:pages,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPageCounters from './defaults/pageCounters.js';\r\n\r\nclass Page extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\t\t\r\n\t\tthis.element = null;\r\n\t\tthis.pageCounterElement = null;\r\n\t\tthis.pageCounter = null;\r\n\t\t\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.remoteRowCountEstimate = null;\r\n\t\t\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\t\t\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\t\t\r\n\t\tthis.pageSizes = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\r\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\t\t\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\t\t\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\r\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\t\t\t\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePageCounter();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn {index, top}\r\n\t}\r\n\t\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\t\t\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\t\t\t\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\t\t\t\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\t\t\t\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\r\n\t\t\r\n\t\tthis.generatePageSizeSelectList();\r\n\t}\r\n\t\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\t\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\t\t\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn Promise.reject();\r\n\t}\r\n\t\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\t\t\t\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\t\t\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\t\t\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\t\t\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\t\t\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\t\t\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\t\t\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\t\t\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\t\t\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\t\t\t\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\t\t\t\t\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializePageCounter(){\r\n\t\tvar counter = this.table.options.paginationCounter,\r\n\t\tpageCounter = null;\r\n\t\t\r\n\t\tif(counter){\r\n\t\t\tif(typeof counter === \"function\"){\r\n\t\t\t\tpageCounter = counter;\r\n\t\t\t}else{\r\n\t\t\t\tpageCounter = Page.pageCounters[counter];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(pageCounter){\r\n\t\t\t\tthis.pageCounter = pageCounter;\r\n\t\t\t\t\r\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\r\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup pagination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel, paginationCounterHolder;\r\n\t\t\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\t\t\t\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\t\t\t\t\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\t\t\t\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tif(this.table.options.paginationCounter){\r\n\r\n\t\t\t\t\tpaginationCounterHolder \r\n\r\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\r\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\r\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\r\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(paginationCounterHolder){\r\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.footerAppend(this.pageCounterElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.footerAppend(this.element);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\t\t}\r\n\t\t\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\t\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\t\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\t\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\t\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\t\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set the maximum page\r\n\tsetMaxPage(max){\r\n\t\t\r\n\t\tmax = parseInt(max);\r\n\t\t\r\n\t\tthis.max = max || 1;\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t\r\n\t\tpage = parseInt(page);\r\n\t\t\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\t\t\t\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\t\t\r\n\t\tthis.trackChanges();\r\n\t}\r\n\t\r\n\t_setPageCounter(totalRows, size, currentRow){\r\n\t\tvar content;\r\n\t\t\r\n\t\tif(this.pageCounter){\r\n\r\n\t\t\tif(this.mode === \"remote\"){\r\n\t\t\t\tsize = this.size;\r\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\r\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\r\n\t\t\t}\r\n\r\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\r\n\t\t\t\r\n\t\t\tswitch(typeof content){\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\tif(content instanceof Node){\r\n\t\t\t\t\t\r\n\t\t\t\t\t//clear previous cell contents\r\n\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageCounterElement.appendChild(content);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(content != null){\r\n\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);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"undefined\":\r\n\t\t\t\tcase \"null\":\r\n\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.pageCounterElement.innerHTML = content;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\t\t\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\t\t\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\t\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\t\t\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\t\t\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\t\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\t\t\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\t\t\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\t\t\r\n\t\treturn button;\r\n\t}\r\n\t\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger()\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\t\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\t\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\t\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\t\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar actualRowPageSize = 0,\r\n\t\toutput, start, end, actualStartRow;\r\n\r\n\t\tvar actualRows = data.filter((row) => {\r\n\t\t\treturn row.type === \"row\";\r\n\t\t});\r\n\t\t\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\t\t\t\r\n\t\t\tthis.setMaxRows(data.length);\r\n\t\t\t\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageButtons();\r\n\t\t\t\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tlet row = data[i];\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\toutput.push(row);\r\n\r\n\t\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\t\tif(!actualStartRow){\r\n\t\t\t\t\t\t\tactualStartRow = row;\r\n\t\t\t\t\t\t}\t\r\n\r\n\t\t\t\t\t\tactualRowPageSize++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\r\n\t\t\t\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\t\t\tthis._setPageCounter(actualRows.length);\r\n\t\t\t\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrigger(){\r\n\t\tvar left;\r\n\t\t\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\t\t\t\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\t\t\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\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));\r\n\t\t\t\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\t\t\t\t\t\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\treturn data.data;\r\n\t}\r\n\t\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.containerElement;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\t\t\t\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\n//load defaults\r\nPage.pageCounters = defaultPageCounters;\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.slice(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.slice(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};\r\n","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.options.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.options.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\nPersistence.moduleInitOrder = -10;\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Popup extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\r\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\r\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\r\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextPopup\");\r\n\t\tthis.registerColumnOption(\"headerClickPopup\");\r\n\t\tthis.registerColumnOption(\"headerPopup\");\r\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\r\n\t\tthis.registerColumnOption(\"contextPopup\");\r\n\t\tthis.registerColumnOption(\"clickPopup\");\r\n\t\t\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextPopup){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickPopup){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextPopup){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickPopup){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextPopup\", \"headerClickPopup\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\r\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\r\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerPopup){\r\n\t\t\tthis.initializeColumnHeaderPopup(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\r\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\r\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderPopup(column){\r\n\t\tvar icon = column.definition.headerPopupIcon,\r\n\t\theaderPopupEl;\r\n\t\t\r\n\t\theaderPopupEl = document.createElement(\"span\");\r\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\r\n\r\n\t\tif(icon){\r\n\t\t\tif(typeof icon === \"function\"){\r\n\t\t\t\ticon = icon(column.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tif(icon instanceof HTMLElement){\r\n\t\t\t\theaderPopupEl.appendChild(icon);\r\n\t\t\t}else{\r\n\t\t\t\theaderPopupEl.innerHTML = icon;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\r\n\t\t}\r\n\t\t\r\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadPopupTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadPopupTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadPopupEvent(contents, e, component){\r\n\t\tvar renderedCallback;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trenderedCallback = callback;\r\n\t\t}\r\n\t\t\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\r\n\t\t\r\n\t\tthis.loadPopup(e, component, contents, renderedCallback);\r\n\t}\r\n\t\r\n\tloadPopup(e, component, contents, renderedCallback){\r\n\t\tvar touch = !(e instanceof MouseEvent),\r\n\t\tcontentsEl, popup;\r\n\t\t\r\n\t\tif(contents instanceof HTMLElement){\r\n\t\t\tcontentsEl = contents;\r\n\t\t}else{\r\n\t\t\tcontentsEl = document.createElement(\"div\");\r\n\t\t\tcontentsEl.innerHTML = contents;\r\n\t\t}\r\n\t\t\r\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\r\n\r\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\tpopup = this.popup(contentsEl);\r\n\r\n\t\tif(typeof renderedCallback === \"function\"){\r\n\t\t\tpopup.renderCallback(renderedCallback);\r\n\t\t}\r\n\t\t\r\n\t\tpopup.show(e).hideOnBlur(() => {\r\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\r\n\t\t});\r\n\r\n\r\n\r\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent())\r\n\t}\r\n}\r\n\r\nPopup.moduleName = \"popup\";\r\n\r\nexport default Popup;\r\n","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar self = this,\r\n\t\tpushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn self.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.latestX = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.initialNextColumn = null;\r\n\t\tthis.nextColumn = null;\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\r\n\t}\r\n\t\r\n\tinitializeEventWatchers(){\r\n\t\tif(!this.initialized){\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\r\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.deInitializeComponent(cell);\r\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutColumnHeader(column){\r\n\t\tif(column.definition.resizable){\r\n\t\t\tthis.initializeEventWatchers();\r\n\t\t\tthis.deInitializeComponent(column);\r\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolumnLayoutUpdated(column){\r\n\t\tvar prev = column.prevColumn();\r\n\t\t\r\n\t\tthis.reinitializeColumn(column);\r\n\t\t\r\n\t\tif(prev){\r\n\t\t\tthis.reinitializeColumn(prev);\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeColumn(column){\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\r\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\r\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(type, component, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable,\r\n\t\tconfig = {},\r\n\t\tnearestColumn = column.getLastColumn();\r\n\t\t\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tconfig = {variableHeight:variableHeight};\r\n\t\t}\r\n\t\t\r\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\r\n\t\t\t\r\n\t\t\tvar handle = document.createElement('span');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tself.startColumn = column;\r\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\r\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//resize column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\r\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\r\n\t\t\t\t\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tnearestColumn.reinitializeWidth(true);\r\n\t\t\t\t\r\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\r\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tconfig.handleEl = handle;\r\n\t\t\t\r\n\t\t\tif(element.parentNode){\r\n\t\t\t\telement.after(handle);\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tcomponent.modules.resize = config;\r\n\t}\r\n\t\r\n\tdeInitializeColumn(column){\r\n\t\tthis.deInitializeComponent(column);\r\n\t\t\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tthis.deInitializeComponent(cell);\r\n\t\t});\r\n\t}\r\n\t\r\n\tdeInitializeComponent(component){\r\n\t\tvar handleEl;\r\n\t\t\r\n\t\tif(component.modules.resize){\r\n\t\t\thandleEl = component.modules.resize.handleEl;\r\n\t\t\t\r\n\t\t\tif(handleEl && handleEl.parentElement){\r\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tresizeHandle(component, height){\r\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\r\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\t\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\t\t\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\tfunction mouseMove(e){\r\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\r\n\t\t\tstartDiff = x - self.startX,\r\n\t\t\tmoveDiff = x - self.latestX,\r\n\t\t\tblockedBefore, blockedAfter;\r\n\r\n\t\t\tself.latestX = x;\r\n\t\t\t\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tstartDiff = -startDiff;\r\n\t\t\t\tmoveDiff = -moveDiff;\r\n\t\t\t}\r\n\r\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\r\n\r\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\r\n\r\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\r\n\r\n\t\t\tif(moveDiff < 0){\r\n\t\t\t\tself.nextColumn = self.initialNextColumn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\r\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\r\n\r\n\t\t\t\tif(moveDiff > 0){\r\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\r\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(self.nextColumn){\r\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\t\t\t\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tfunction mouseUp(e){\r\n\t\t\t\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\t\t\t\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\t\t\t\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(self.startWidth !== column.getWidth()){\r\n\t\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\t\t\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\t\t\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.latestX = self.startX;\r\n\t\tself.startWidth = column.getWidth();\r\n\t\t\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate responsive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//determine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\r\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort((a, b) => {\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initializeResponsivity();\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\t\t\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\t\t\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\r\n\t\t\t\r\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\t\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\t\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\t\t\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\t\t\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\t\t\t\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\t\t\r\n\t\trow.modules.select = {selected:false};\r\n\t\t\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\t\t\t\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\t\r\n\thandleComplexRowClick(row, e){\r\n\t\tif(e.shiftKey){\r\n\t\t\tthis.table._clearSelection();\r\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\r\n\t\t\t\r\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\r\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\r\n\t\t\t\r\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\r\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\t\t\t\r\n\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\r\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\r\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\r\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.lastClickedRow = row;\r\n\t\t\t}else{\r\n\t\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.selectable !== true){\r\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\r\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectRows(toggledRows);\r\n\t\t\t}\r\n\t\t\tthis.table._clearSelection();\r\n\t\t}\r\n\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\tthis.toggleRow(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}else{\r\n\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\tthis.selectRows(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\t\t\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"string\":\r\n\t\t\t\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\t\t\t\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\t\t\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\t\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\t\t\r\n\t\tif(typeof rows == \"undefined\"){\r\n\t\t\t\r\n\t\t\trowCount = self.selectedRows.length;\r\n\t\t\t\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(rowCount){\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\t\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tgetSelectedRows(){\r\n\t\t\r\n\t\tvar rows = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\t\t\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\t\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\t\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\t\t\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tif(DT.isDateTime(a)){\r\n\t\t\t a = a;\r\n\t\t}else if(format === \"iso\"){\r\n\t\t\t a = DT.fromISO(String(a));\r\n\t\t}else{\r\n\t\t\t a = DT.fromFormat(String(a), format);\r\n\t\t}\r\n\r\n\t\tif(DT.isDateTime(b)){\r\n\t\t\t b = b;\r\n\t\t}else if(format === \"iso\"){\r\n\t\t\t b = DT.fromISO(String(b));\r\n\t\t}else{\r\n\t\t\t b = DT.fromFormat(String(b), format);\r\n\t\t}\r\n\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData(true);\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","import Module from '../../core/Module.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nclass Tooltip extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.tooltipSubscriber = null,\r\n\t\tthis.headerSubscriber = null,\r\n\t\t\r\n\t\tthis.timeout = null;\r\n\t\tthis.popupInstance = null;\r\n\t\t\r\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\r\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \r\n\t\t\r\n\t\tthis.registerColumnOption(\"tooltip\");\r\n\t\tthis.registerColumnOption(\"headerTooltip\");\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.deprecationCheck();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tdeprecationCheck(){\r\n\t\tif(typeof this.table.options.tooltipGenerationMode !== \"undefined\"){\r\n\t\t\tconsole.warn(\"Use of the tooltipGenerationMode option is now deprecated. This option is no longer needed as tooltips are always generated on hover now\");\r\n\t\t}\r\n\t}\t\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\r\n\t\t\tthis.headerSubscriber = true;\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\r\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\r\n\t\t\tthis.tooltipSubscriber = true;\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\r\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\r\n\t\t}\r\n\t}\r\n\t\r\n\tmousemoveCheck(action, e, component){\r\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\r\n\t\t\r\n\t\tif(tooltip){\r\n\t\t\tthis.clearPopup();\r\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\r\n\t\t}\r\n\t}\r\n\r\n\tmouseoutCheck(action, e, component){\r\n\t\tif(!this.popupInstance){\r\n\t\t\tthis.clearPopup();\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearPopup(action, e, component){\r\n\t\tclearTimeout(this.timeout);\r\n\t\tthis.timeout = null;\r\n\t\t\r\n\t\tif(this.popupInstance){\r\n\t\t\tthis.popupInstance.hide();\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadTooltip(e, component, tooltip){\r\n\t\tvar contentsEl, renderedCallback, coords;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trenderedCallback = callback;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof tooltip === \"function\"){\r\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\r\n\t\t}\r\n\t\t\r\n\t\tif(tooltip instanceof HTMLElement){\r\n\t\t\tcontentsEl = tooltip;\r\n\t\t}else{\r\n\t\t\tcontentsEl = document.createElement(\"div\");\r\n\t\t\t\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(component instanceof Cell){\r\n\t\t\t\t\ttooltip = component.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(component.definition.field){\r\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\r\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\ttooltip = component.definition.title;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcontentsEl.innerHTML = tooltip;\r\n\t\t}\r\n\t\t\r\n\t\tif(tooltip || tooltip === 0 || tooltip === \"0\" || tooltip === false){\r\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\r\n\r\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault())\r\n\t\t\t\r\n\t\t\tthis.popupInstance = this.popup(contentsEl);\r\n\t\t\t\r\n\t\t\tif(typeof renderedCallback === \"function\"){\r\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\r\n\t\t\t}\r\n\r\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\r\n\t\t\t\r\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\r\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\r\n\t\t\t\tthis.popupInstance = null;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\r\n\t\t}\r\n\t}\r\n}\r\n\r\nTooltip.moduleName = \"tooltip\";\r\n\r\nexport default Tooltip;\r\n","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.invalidCells = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\t\t\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\t\t\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\t\t\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\t\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\r\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\r\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Event Handling //////////\r\n\t///////////////////////////////////\r\n\t\r\n\teditValidate(cell, value, previousValue){\r\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\r\n\t\t\r\n\t\t// allow time for editor to make render changes then style cell\r\n\t\tif(valid !== true){\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn valid;\r\n\t}\r\n\t\r\n\teditorClear(cell, cancelled){\r\n\t\tif(cancelled){\r\n\t\t\tif(cell.column.modules.validate){\r\n\t\t\t\tthis.cellValidate(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t}\r\n\t\r\n\teditedClear(cell){\r\n\t\tif(cell.modules.validate){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\r\n\t}\r\n\t\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\t\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\t\t\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\t\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\t\t\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\t\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\t\t\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\t\t\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\t\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trow = row.getComponent();\r\n\t\t\t\r\n\t\t\tvar valid = row.validate();\r\n\t\t\t\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\t\t\r\n\t\tif(column.definition.validator){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\t\t\t\t\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\t\t\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\t\t\t\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_buildValidator(type, params){\r\n\t\t\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\t\t\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\t\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tfailedValidators = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\t\t\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach((item) => {\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tfailedValidators.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\t\t\r\n\t\tif(!failedValidators.length){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = failedValidators;\r\n\t\t\t\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn failedValidators.length ? failedValidators : true;\r\n\t}\r\n\t\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\t\t\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\t\t\t\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\t\t\t\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","//tabulator with all modules installed\r\nimport {default as Tabulator} from './Tabulator.js';\r\nimport * as modules from '../core/modules/optional.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nclass TabulatorFull extends Tabulator {};\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(TabulatorFull, modules);\r\n\r\nexport default TabulatorFull;"],"names":["debugEventsExternal","debugEventsInternal","debugInvalidOptions","debugInitialization","height","minHeight","maxHeight","columnHeaderVertAlign","popupContainer","columns","columnDefaults","data","autoColumns","autoColumnsDefinitions","nestedFieldSeparator","footerElement","index","textDirection","addRowPos","headerVisible","renderVertical","renderHorizontal","renderVerticalBuffer","scrollToRowPosition","scrollToRowIfVisible","scrollToColumnPosition","scrollToColumnIfVisible","rowFormatter","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","rowHeight","placeholder","dataLoader","dataLoaderLoading","dataLoaderError","dataLoaderErrorTimeout","dataSendParams","dataReceiveParams","CoreFeature","table","silent","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","options","value","module","ColumnComponent","column","_column","type","Proxy","get","target","name","receiver","componentFunctionBinder","handle","getElement","getDefinition","getField","getTitleDownload","cells","forEach","cell","push","getComponent","visible","isGroup","show","hide","output","length","parent","Column","columnManager","scrollToColumn","to","after","toColumn","findColumn","moveColumn","console","warn","nextCol","nextColumn","prevCol","prevColumn","updates","updateDefinition","getWidth","width","result","reinitializeWidth","setWidth","renderer","rerenderColumns","CellComponent","_cell","getValue","getOldValue","initialValue","row","getData","mutate","setValue","setValueActual","checkHeight","Cell","element","oldValue","minWidth","component","loaded","build","generateElement","_configureCell","getFieldValue","document","createElement","className","setAttribute","field","vertAligns","top","bottom","middle","hozAligns","left","right","center","style","textAlign","hozAlign","vertAlign","display","alignItems","justifyContent","definition","cssClass","classNames","split","classList","add","val","innerHTML","Node","firstChild","removeChild","appendChild","containerOnly","layoutElement","force","changed","setValueProcessData","cellRendered","cellEdited","call","dispatchExternal","subscribedExternal","rowManager","setFieldValue","_generateContents","widthStyled","offsetWidth","minWidthStyled","maxWidth","maxWidthStyled","reinitializeHeight","heightStyled","offsetHeight","redrawBlock","parentNode","deleteCell","calcs","getCellIndex","def","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleDownload","titleFormatterRendered","mapDefinitions","setField","maxInitialWidth","widthFixed","i","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","bindModuleColumns","el","defaults","optionsList","generate","defaultOptionList","Object","keys","indexOf","title","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","dblTap","tapHold","tap","headerClick","addEventListener","e","headerDblClick","headerContext","headerTap","passive","headerDblTap","clearTimeout","setTimeout","headerTapHold","classeNames","setMinWidth","parseInt","setMaxWidth","headerHozAlign","_buildColumnHeaderTitle","editableTitle","stopPropagation","focus","langBind","text","_formatColumnHeaderTitle","contents","dataObj","structure","columnRendered","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","paddingTop","verticalAlign","clearVerticalAlign","formatter","rowNumColumn","getFirstColumn","getLastColumn","getTopColumn","updateBranches","colDefs","responsiveToggle","verticalAlignHeaders","matchChildWidths","childWidth","child","splice","setWidthActual","isNaN","Math","floor","clientWidth","max","min","rows","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","ceil","getBoundingClientRect","Promise","resolve","reject","cellCount","deregisterColumn","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","fitToData","clearWidth","setTo","assign","addColumn","then","error","defaultOptions","Helpers","box","window","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","obj","clone","list","objectProto","__proto__","arrayProto","Array","isArray","subject","match","copy","findIndex","item","unshift","deepClone","OptionsList","msgType","registeredDefaults","option","userOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","tableElement","verticalFillMode","callback","update","blockRedraw","dir","includingBuffer","getDisplayRows","rowEl","remove","clearRows","clearColumns","renderRows","renderColumns","rerenderRows","position","ifVisible","rowIndex","offset","elVisible","elOffset","scrollToRowNearestTop","scrollToRow","scrollHeight","scrollTop","offsetTop","BaiscHorizontal","VirtualDomHorizontal","leftCol","rightCol","scrollLeft","vDomScrollPosLeft","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","windowBuffer","visibleRows","initialized","isFitData","compatibilityCheck","layoutCheck","vertScrollListen","frozen","ok","find","col","startsWith","clearVisRowCache","dataChange","scroll","buffer","columnsByIndex","old","cols","colPos","clear","calcWindowBuffer","config","leftPos","rightPos","fitDataCheck","vdomHoz","paddingLeft","paddingRight","reinitChanged","reinitializeRows","initializeRow","reinitializeRow","change","collsWidth","colEnd","generateCells","layoutRefresh","getVisibleRows","diff","abs","addColRight","removeColLeft","addColLeft","removeColRight","start","end","changes","getCell","fitDataColActualWidthCheck","prepend","ex","message","newWidth","widthDiff","colPositionAdjust","ColumnManager","blockHozScrollEvent","headersElement","columnsByField","defaultColumnOptions","initializeRenderer","createHeadersElement","createHeaderElement","insertBefore","scrollHorizontal","renderClass","renderers","RendererVirtualDomHorizontal","RendererBasicHorizontal","initialize","hozAdjust","scrollWidth","marginLeft","scrollColumns","definitions","sorter","setColumns","_addColumn","_reIndexColumns","redraw","before","nextToColumn","colEl","topColumn","parentIndex","nextEl","nextSibling","getHeight","adjustTableSize","_getSelf","HTMLElement","root","matches","fieldRoot","active","structured","from","moveColumnActual","reinitialize","_moveColumnInArray","getComponents","updateRows","fromIndex","toIndex","concat","adjust","offsetLeft","generateCell","totalWidth","fixedWidth","colWidth","layoutMode","resetScroll","footerManager","RowComponent","_row","transform","getCells","getRowPosition","moveToRow","updateData","normalizeHeight","nextRow","prevRow","Row","manualHeight","outerHeight","created","setData","create","deleteCells","renderRowCells","rerenderRowCells","children","resizableRows","setHeight","clearHeight","updatedData","tempData","newRowData","JSON","parse","attrname","getColumnsByFieldRoot","findCell","nextDisplayRow","prevDisplayRow","toRow","findRow","moveRowActual","refreshActiveData","deleteActual","getRowIndex","detatchModules","deleteRow","group","BaiscVertical","visibility","onlyGroupHeaders","styleRow","rowTop","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topRow","topOffset","deinitializeHeight","topDiff","bottomDiff","margin","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","topEdge","bottomEdge","topFound","bottomRow","slice","forceMove","holder","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","containerHeight","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","placeholderContents","firstRender","renderMode","fixedHeight","activeRowsPipeline","activeRows","activeRowsCount","displayRows","displayRowsCount","redrawBlockRestoreConfig","redrawBlockRenderInPosition","dataPipeline","displayPipeline","initializePlaceholder","leftDir","topDir","_positionPlaceholder","scrollRows","renderInPosition","columnsChanged","pagination","_setDataActual","reRenderInPosition","generateColumnsFromRowData","_wipeElements","wipe","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","regenerateRowNumbers","_showPlaceholder","pos","addRowActual","findAddRowPos","reverse","addRow","_clearPlaceholder","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","getRows","handler","priority","sort","a","b","skipStage","stage","cascadeOrder","refreshPipelines","renderTable","layoutColumnsOnNewData","resetDisplayRows","setDisplayRows","viewable","RendererVirtualDomVertical","RendererBasicVertical","_clearTable","renderEmptyScroll","initialHeight","otherHeight","external","resize","tableWidth","browser","event","createEvent","initEvent","dispatchEvent","Event","FooterManager","containerElement","createContainerElement","initializeElement","querySelector","activate","deactivate","InteractionManager","abortClasses","previousTargets","listeners","componentMap","pseudoTrackers","subscriber","pseudoTracking","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","pseudoMouseEnter","pseudoMouseLeave","leaveList","linkedKeys","filter","links","includes","values","comp","subscriptionChanged","clearWatchers","added","bindPseudoEvents","updateEventListeners","track","removeEventListener","path","composedPath","targets","findTargets","bindComponents","triggerEvents","abort","elTargets","targetMatches","previousTarget","closest","ComponentFunctionBinder","bindings","funcName","DataLoader","requestOrder","loading","params","replace","requestNo","alertLoader","mapParams","response","objectInvert","rowData","clearAlert","alertError","map","shouldLoad","alertManager","alert","langText","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifiySubscriptionChange","notifiers","args","shift","callResult","apply","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","confirmed","TableRegistry","tables","query","results","querySelectorAll","matchElement","Tabulator","lookupTable","Popup","container","_lookupContainer","reversedX","childPopup","blurable","blurCallback","renderedCallback","blurEvent","escEvent","_escapeCheck","_checkContainerIsParent","body","touch","MouseEvent","x","touches","pageX","y","pageY","parentOffset","containerOffset","origin","parentEl","coords","elementPositionCoords","containerEventCoords","_fitToScreen","keyCode","Module","_handler","register","func","initGuard","registerDataPipelineHandler","registerDisplayPipelineHandler","append","menuEl","menuContainer","content","reinitializeColumnWidths","responsiveLayout","modExists","colsWidth","gap","lastCol","responsive","flexWidth","flexGrowUnits","flexColWidth","flexColumns","fixedShrinkColumns","flexShrinkUnits","overflowWidth","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","remainingFlexGrowUnits","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","fitData","fitDataFill","fitDataGeneral","fitDataTable","fitDataStretch","fitColumns","Layout","mode","registerTableOption","registerColumnOption","modes","moduleName","defaultModes","Localize","locale","lang","langList","langs","headerFilterPlaceholder","setHeaderFilterPlaceholder","installLang","setLocale","registerTableFunction","getLang","headerFilters","_setLangProp","desiredLocale","traverseLang","trans","prop","navigator","language","toLowerCase","prefix","_executeBindings","pathArray","_getLangElement","level","rootPath","binding","defaultLangs","Comms","receive","selectors","connections","connection","con","action","tableComms","commsReceived","ModuleBinder","tabulator","bindStaticFuctionality","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","rtl","originalElement","initializeCoreSystems","_create","_clearObjectPointers","_mapDeprecatedFunctionality","InteractionMonitor","getSelection","empty","removeAllRanges","selection","_rtlCheck","_buildElement","_initializeTable","_loadInitialData","getComputedStyle","direction","reactiveData","newElement","tagName","attributes","replaceChild","_detectBrowser","deregister","ua","userAgent","vendor","opera","test","msg","stack","line","Error","trim","restoreRedraw","blockActiveLoad","clearData","getDataCount","responses","addRows","newRows","getRowFromPosition","foundRows","fromRow","getDefinitionTree","fromColumn","plugin","required","Accessor","allowedTypes","initializeColumn","transformRow","charAt","toUpperCase","accessor","lookupAccessor","accessors","rowComponent","traverse","colCompnent","defautlAccessors","method","generateParamsList","serializeParams","encoded","encodeURIComponent","join","url","contentType","urlGenerator","ajaxContentType","contentTypeFormatters","headers","Accept","location","credentials","fetch","json","status","statusText","stringify","form","FormData","Ajax","loaderPromise","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxURL","setUrl","setDefaultConfig","ajaxConfig","getUrl","requestDataCheck","requestParams","requestData","ajaxParams","previousData","generateConfig","sendRequest","defaultConfig","ajaxRequesting","ajaxResponse","defaultContentTypeFormatters","updateOrAddData","insert","addData","clipboard","headerFindSuccess","columnMap","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","generateExportList","clipboardCopyConfig","clipboardCopyStyled","genereateHTMLTable","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","checkPaseOrigin","getPasteData","mutateData","mutator","valid","edit","currentCell","defaultPasteActions","defaultPasteParsers","CalcComponent","calcParams","precision","reduce","sum","Number","toFixed","parseFloat","String","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","cellValueChanged","initializeColumnCheck","rowsUpdated","recalcActiveRows","recalcActiveRowsRefresh","tableRedraw","getResults","userRecalc","recalc","groupBy","recalcRowGroup","dataTreeStartExpanded","dataTree","recalcAll","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","footerRemove","footerPrepend","rowsToData","generateRow","frozenColumns","recalcGroup","groupRows","getRowGroup","groups","getChildGroups","generateRowData","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","disable","enable","format","getFormatter","paramKey","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","registerComponentFunction","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","isRowExpanded","dummyEl","dataTreeChildField","dataTreeChildIndent","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","layoutRow","rowDelete","rowDataChanged","columnMoving","initializeElementField","registerDisplayHandler","firstCol","getFirstVisibleColumn","dataTreeElementColumn","getTreeChildren","redrawNeeded","refreshData","childArray","controlEl","generateControlElement","cloneNode","marginRight","getPropertyValue","oldControl","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","subChildren","sub","childData","childRow","childIndex","findChildIndex","recurse","setFileContents","delimiter","fileContents","depth","bom","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","orientation","unit","parseRow","styles","colSpan","rowSpan","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","self","sheetName","workbook","XLSX","utils","book_new","tableFeatures","SheetNames","Sheets","generateSheet","merges","worksheet","s","c","r","j","Date","sheet_add_aoa","encode_range","sheetOnly","sheets","sheet","commsSend","intercept","s2ab","buf","ArrayBuffer","view","Uint8Array","charCodeAt","write","bookType","bookSST","csv","jsonLines","pdf","xlsx","Download","blob","download","downloadToTab","filename","interceptCallback","downloadFunc","buildLink","mime","triggerDownload","downloaders","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","Blob","downloadReady","URL","createObjectURL","msSaveOrOpenBlob","click","defaultDownloaders","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","maskAutoFill","onRendered","success","cancel","editorParams","cellValue","input","search","padding","boxSizing","elementAttributes","getAttribute","preventScroll","selectContents","onChange","vertNav","verticalNavigation","count","whiteSpace","getRow","heightNow","selectionStart","stopImmediatePropagation","step","blurFunc","Edit","editor","_initializeParams","displayItems","currentItems","focusedItem","_createInputElement","listEl","_createListElement","initialValues","isFilter","filterTimeout","filtered","typing","popup","listIteration","actions","_deprecationCheck","_initializeValue","_onRendered","listItemFormatter","sortValuesList","searchFunc","searchingPlaceholder","defaultValue","multiselect","headerFilterInitialListGen","cellEl","clickStop","_preventBlur","_inputKeyDown","attribs","clearable","autocomplete","cursor","caretColor","_bindInputEvents","valueKeys","valueCheck","placeholderLoading","placeholderEmpty","filterDelay","emptyValue","freetext","filterFunc","filterRemote","allowEmpty","listOnEmpty","valuesLookup","valuesURL","_inputFocus","_inputClick","_inputBlur","_inputSearch","_inputKeyUp","rebuildOptionsList","_filterList","_clearChoices","_keyUp","_keyDown","_keySide","_keyEnter","_keyEsc","_keyHomeEnd","_keySelectLetter","_keyAutoCompLetter","_focusItem","_chooseItem","_cancel","_scrollToValue","_filter","character","fromCharCode","filterTerm","label","scrollIntoView","behavior","block","inline","_generateOptions","_sortOptions","_buildList","_showList","isInteger","_filterOptions","itteration","_ajaxRequest","_uniqueColumnValues","valuesLookupField","_addPlaceholder","responseValues","_parseList","_clearList","term","urlBuilder","getColumnByField","getColumn","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","isVisible","_setListWidth","hideOnBlur","_resolveValue","blur","List","maxStars","getElementsByTagName","size","stars","starsHolder","star","createElementNS","starChange","buildStar","starHolder","nextStar","changeValue","overflow","textOverflow","percent","bar","mouseDrag","mouseDragWidth","updateValue","calcVal","round","backgroundColor","screenX","tristate","indetermValue","indeterminateValue","indetermState","trueValueSet","falseValueSet","marginTop","indeterminate","checked","trueValue","checkedValue","falseValue","textarea","number","progress","tickCross","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellisEdited","clearEdited","editCell","cellCancelEdit","bindEditor","columnDeleteCheck","rowDeleteCheck","cancelEdit","keybindingNavigateNext","newRow","edited","nextCell","findNextEditableCell","getIndex","findPrevEditableCell","allowEdit","check","prevCell","editable","clearEditor","variableHeight","cellEditCancelled","contains","button","forceEdit","focusCellNoEvent","getRenderMode","leftEdge","rightEdge","leftMargin","rightMargin","rendered","cellEditor","validationMode","focusScrollAdjust","cellClick","cellEditing","editIndex","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","genereateTableElement","selectRow","selectedRows","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","genereateHeaderElement","genereateGroupElement","genereateCalcElement","genereateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","generator","cellWrapper","formatCells","formatExportValue","align","htmlOutputConfig","props","lookup","fromStyle","filterVal","rowVal","filterParams","RegExp","keywords","separator","keyword","matchAll","endsWith","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","filterMode","remoteFilterParams","registerDataHandler","initialFilter","setFilter","initialHeaderFilter","refreshFilter","addFilter","removeFilter","all","clearFilter","clearHeaderFilter","headerFilter","setHeaderFilterColumnPlaceholder","filterType","tagType","attrType","filterChangeCheck","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","headerElement","headerFilterEmptyCheck","headerFilterParams","headerPos","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","reloadData","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","defaultFilters","formatterParams","emptyToSpace","sanitizeHTML","floatVal","sign","integer","decimal","rgx","decimalSym","thousandSym","thousand","negativeSign","symbolAfter","urlPrefix","labelTraverse","labelField","urlField","src","urlSuffix","truthy","allowTruthy","tick","tickElement","cross","crossElement","DT","DateTime","luxon","inputFormat","outputFormat","invalid","invalidPlaceholder","newDatetime","isDateTime","fromISO","fromFormat","isValid","timezone","setZone","toFormat","suffix","humanize","date","now","toHuman","starActive","starInactive","colors","color","percentValue","legendAlign","legend","legendColor","barEl","barContainer","legendEl","holderEl","toggleList","isOpen","checkbox","selectableRangeMode","toggleSelect","handleComplexRowClick","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","plaintext","money","link","image","datetime","datetimediff","traffic","buttonTick","buttonCross","rownum","responsiveCollapse","rowSelection","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","leftColumns","rightColumns","rightPadding","initializationMode","scrollEndTimer","layoutCell","reinitializeColumns","blockLayout","unblockLayout","edge","frozenCheck","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","layoutGroupCalcs","groupList","allCells","leftParents","getColGroupParentElement","otherRows","deinitialize","getTableElement","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","styleRows","GroupComponent","groupManager","toggleVisibility","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","elementContents","arrowElement","createElements","addBindings","createValueGroups","arrow","movableRows","moveRow","initializeGroupHeader","allowedValues","_createGroup","toggleElement","groupToggleElement","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","updateGroupRows","scrollHeader","groupValues","removeGroup","noCalc","_visSet","getHeadersAndRows","hasTopCalcs","detachElement","generateTopRow","hasBottomCalcs","generateBottomRow","groupClosedShowCalcs","getDisplayIndex","checkClassicModeGroupHeaderWidth","prev","compoment","getPath","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","configureGroupSetup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","groupStartOpen","langValue","items","removeCalcs","getRealColumns","lookupFunc","prevValue","assignRowToGroup","getGroupedData","toGroup","fromGroup","removeRow","insertRow","generateGroups","groupComponents","groupListData","rowCount","headerContent","pullGroupListData","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","samePath","every","groupPath","groupId","cellEdit","rowAdd","_rebindRow","rowMove","posFrom","newValue","posTo","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","getGroup","undoers","redoers","oldRow","defaultUndoers","defaultRedoers","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","optionsArr","attrib","_attribValue","exists","_findCol","textContent","csvImporter","inQuote","nextChar","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","getColumns","defaultImporters","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","groupTap","groupDblTap","groupTapHold","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tapDbl","initializeExternalEvents","cellContentsSelectionFixer","selectNode","subscriptionChangeExternal","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","notouch","watchers","componentObj","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","keyBlock","newPos","scrollMax","navLeft","navRight","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","bindingList","mapBinding","symbolsList","ctrl","meta","symbols","code","checkBinding","ctrlKey","shiftKey","metaKey","defaultBindings","defaultActions","Menu","nestedMenuBlock","currentComponent","rootPopup","deprecationCheck","initializeRowWatchers","initializeGroupWatchers","rowContextMenu","loadMenuEvent","on","rowClickMenu","groupContextMenu","groupClickMenu","headerContextMenu","loadMenuTableColumnEvent","headerClickMenu","headerMenu","initializeColumnHeaderMenu","contextMenu","loadMenuTableCellEvent","clickMenu","icon","headerMenuIcon","headerMenuEl","menu","loadMenu","parentPopup","itemEl","disabled","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","movableColumns","mousemove","which","startMove","bindTouchEvents","startXMove","prevColWidth","nextColWidthLast","prevColWidthLast","moveToCol","_bindMouseMove","movingCells","_unbindMouseMove","columnHolder","xPos","scrollPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectionSelectorsTables","connectionSelectorsElements","connectionElements","connectedTable","connectedRow","movableRowsConnectedTables","movableRowsConnectedElements","initializeCell","mouseup","tableRowDrop","previousSibling","rowHandle","startYMove","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","setStartPosition","connectToTables","pointerEvents","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","connectionTables","commsConnections","dropEvent","elementRowDrop","tabulatorElementDropEvent","sender","movableRowsSender","senders","movableRowsReceiver","receivers","connect","disconnect","dropComplete","fromTable","toTable","Mutator","enabled","transformCell","mutateLink","lookupMutator","mutators","mutatorEdit","linkCell","defaultMutators","pageSize","currentRow","currentPage","totalRows","totalPages","showingEl","valueEl","ofEl","totalEl","rowsEl","pages","Page","progressiveLoad","pageCounterElement","pageCounter","page","remoteRowCountEstimate","initialLoad","dataChanging","pageSizes","setMaxPage","setPage","userSetPageToRow","userSetPageSize","getPageSize","previousPage","nextPage","getPage","getPageMax","setPageToRow","initialLoadComplete","calculatePageSizes","footerRedraw","paginationAddRow","rowAddingPosition","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePageCounter","initializePaginator","initializeProgressive","scrollVertical","dispRows","testElRow","testElCell","paginationSize","generatePageSizeSelectList","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","counter","paginationCounter","pageCounters","hidden","pageSelectLabel","paginationCounterHolder","paginationElement","paginationCounterElement","footerAppend","paginationInitialPage","paginationButtonCount","trigger","leftSize","rightSize","_generatePageButton","actualRowPageSize","actualStartRow","actualRows","setMaxRows","_setPageButtons","_setPageCounter","last_page","last_row","progressiveLoadDelay","footer","defaultPageCounters","local","id","localStorage","getItem","cookie","cookiePos","setItem","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","testKey","removeItem","persistence","persistenceMode","persistenceID","retreivedData","localStorageTest","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retreiveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","current","oldCols","newCols","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","excludedKeys","defStore","colDef","defaultReaders","defaultWriters","rowContextPopup","loadPopupEvent","rowClickPopup","groupContextPopup","groupClickPopup","headerContextPopup","loadPopupTableColumnEvent","headerClickPopup","headerPopup","initializeColumnHeaderPopup","contextPopup","loadPopupTableCellEvent","clickPopup","headerPopupIcon","headerPopupEl","loadPopup","contentsEl","renderCallback","Print","manualBlock","printAsHtml","replaceTable","cleanup","printFullscreen","genereateTable","printConfig","printStyled","printRowRange","scrollX","scrollY","footerEl","tableEl","footerContent","printHeader","printFooter","printFormatter","scrollTo","ReactiveData","origFuncs","currentVersion","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","getRowFromDataObject","pop","startRow","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","ResizeColumns","startColumn","startWidth","latestX","initialNextColumn","layoutColumnHeader","layoutCellHandles","deInitializeComponent","resizeHandle","columnLayoutUpdated","deInitializeColumn","resizable","initializeEventWatchers","reinitializeColumn","handleEl","nearestColumn","_checkResizability","handleDown","_mouseDown","oldWidth","parentElement","mouseMove","startDiff","moveDiff","blockedBefore","blockedAfter","resizableColumnFit","checkCellHeights","mouseUp","ResizeRows","startHeight","prevHandle","prevHandleDown","screenY","ResizeTable","observer","containerObserver","tableHeight","containerWidth","autoResize","tableStyle","ResizeObserver","entry","nodeHeight","contentRect","nodeWidth","observe","tableResized","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","order","generateCollapsedContent","generateCollapsedRowContent","colCount","working","getFlexBaseWidth","hideColumn","showColumn","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","titleData","valueData","node_content","titleHighlight","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectable","clearSelectionData","rowRetrieve","selectablePersistence","_deselectRow","_rowSelectionChanged","endSelect","selectableCheck","getCurrentCell","_clearSelection","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","_selectRow","rowMatch","rowInfo","selectableRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","langLocale","localeCompare","el1","el2","calc","d","string","time","boolean","array","alphanum","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortElement","columnHeaderSortMulti","newSortList","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","findSorter","setColumnHeader","_sortItems","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","defaultSorters","Tooltip","tooltipSubscriber","headerSubscriber","timeout","popupInstance","tooltipGenerationMode","headerTooltip","mousemoveCheck","mouseoutCheck","tooltip","clearPopup","loadTooltip","tooltipDelay","parameters","numeric","starts","ends","minLength","maxLength","regex","reg","unique","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/dist/js/tabulator.min.js b/dist/js/tabulator.min.js index b7d18613b..d5cef0590 100644 --- a/dist/js/tabulator.min.js +++ b/dist/js/tabulator.min.js @@ -1,3 +1,3 @@ -/* Tabulator v5.1.7 (c) Oliver Folkerd 2022 */ -!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";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var i=0;ie.length)&&(t=e.length);for(var i=0,n=new Array(t);i=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,r=!0,s=!1;return{s:function(){i=e[Symbol.iterator]()},n:function(){var e=i.next();return r=e.done,e},e:function(e){s=!0,a=e},f:function(){try{r||null==i.return||i.return()}finally{if(s)throw a}}}}var f=function(){function e(i){t(this,e),this.table=i}return o(e,[{key:"reloadData",value:function(e,t){return this.table.dataLoader.load(e,void 0,void 0,void 0,t)}},{key:"langText",value:function(){var e;return(e=this.table.modules.localize).getText.apply(e,arguments)}},{key:"langBind",value:function(){var e;return(e=this.table.modules.localize).bind.apply(e,arguments)}},{key:"langLocale",value:function(){var e;return(e=this.table.modules.localize).getLocale.apply(e,arguments)}},{key:"commsConnections",value:function(){var e;return(e=this.table.modules.comms).getConnections.apply(e,arguments)}},{key:"commsSend",value:function(){var e;return(e=this.table.modules.comms).send.apply(e,arguments)}},{key:"layoutMode",value:function(){return this.table.modules.layout.getMode()}},{key:"layoutRefresh",value:function(){return this.table.modules.layout.layout()}},{key:"subscribe",value:function(){var e;return(e=this.table.eventBus).subscribe.apply(e,arguments)}},{key:"unsubscribe",value:function(){var e;return(e=this.table.eventBus).unsubscribe.apply(e,arguments)}},{key:"subscribed",value:function(e){return this.table.eventBus.subscribed(e)}},{key:"subscriptionChange",value:function(){var e;return(e=this.table.eventBus).subscriptionChange.apply(e,arguments)}},{key:"dispatch",value:function(){var e;return(e=this.table.eventBus).dispatch.apply(e,arguments)}},{key:"chain",value:function(){var e;return(e=this.table.eventBus).chain.apply(e,arguments)}},{key:"confirm",value:function(){var e;return(e=this.table.eventBus).confirm.apply(e,arguments)}},{key:"dispatchExternal",value:function(){var e;return(e=this.table.externalEvents).dispatch.apply(e,arguments)}},{key:"subscribedExternal",value:function(e){return this.table.externalEvents.subscribed(e)}},{key:"subscriptionChangeExternal",value:function(){var e;return(e=this.table.externalEvents).subscriptionChange.apply(e,arguments)}},{key:"options",value:function(e){return this.table.options[e]}},{key:"setOption",value:function(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}},{key:"module",value:function(e){return this.table.module(e)}}]),e}(),g=function(){function e(i){return t(this,e),this._column=i,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)}})}return o(e,[{key:"getElement",value:function(){return this._column.getElement()}},{key:"getDefinition",value:function(){return this._column.getDefinition()}},{key:"getField",value:function(){return this._column.getField()}},{key:"getTitleDownload",value:function(){return this._column.getTitleDownload()}},{key:"getCells",value:function(){var e=[];return this._column.cells.forEach((function(t){e.push(t.getComponent())})),e}},{key:"isVisible",value:function(){return this._column.visible}},{key:"show",value:function(){this._column.isGroup?this._column.columns.forEach((function(e){e.show()})):this._column.show()}},{key:"hide",value:function(){this._column.isGroup?this._column.columns.forEach((function(e){e.hide()})):this._column.hide()}},{key:"toggle",value:function(){this._column.visible?this.hide():this.show()}},{key:"delete",value:function(){return this._column.delete()}},{key:"getSubColumns",value:function(){var e=[];return this._column.columns.length&&this._column.columns.forEach((function(t){e.push(t.getComponent())})),e}},{key:"getParentColumn",value:function(){return this._column.parent instanceof w&&this._column.parent.getComponent()}},{key:"_getSelf",value:function(){return this._column}},{key:"scrollTo",value:function(){return this._column.table.columnManager.scrollToColumn(this._column)}},{key:"getTable",value:function(){return this._column.table}},{key:"move",value:function(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)}},{key:"getNextColumn",value:function(){var e=this._column.nextColumn();return!!e&&e.getComponent()}},{key:"getPrevColumn",value:function(){var e=this._column.prevColumn();return!!e&&e.getComponent()}},{key:"updateDefinition",value:function(e){return this._column.updateDefinition(e)}},{key:"getWidth",value:function(){return this._column.getWidth()}},{key:"setWidth",value:function(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.columnManager.renderer.rerenderColumns(!0),t}}]),e}(),v={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,tooltip:void 0,cssClass:void 0,variableHeight:void 0,headerTooltip:void 0,headerVertical:void 0,headerHozAlign:void 0,editableTitle:void 0},b=function(){function e(i){return t(this,e),this._cell=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._cell.table.componentFunctionBinder.handle("cell",e._cell,t)}})}return o(e,[{key:"getValue",value:function(){return this._cell.getValue()}},{key:"getOldValue",value:function(){return this._cell.getOldValue()}},{key:"getInitialValue",value:function(){return this._cell.initialValue}},{key:"getElement",value:function(){return this._cell.getElement()}},{key:"getRow",value:function(){return this._cell.row.getComponent()}},{key:"getData",value:function(){return this._cell.row.getData()}},{key:"getField",value:function(){return this._cell.column.getField()}},{key:"getColumn",value:function(){return this._cell.column.getComponent()}},{key:"setValue",value:function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)}},{key:"restoreOldValue",value:function(){this._cell.setValueActual(this._cell.getOldValue())}},{key:"restoreInitialValue",value:function(){this._cell.setValueActual(this._cell.initialValue)}},{key:"checkHeight",value:function(){this._cell.checkHeight()}},{key:"getTable",value:function(){return this._cell.table}},{key:"_getSelf",value:function(){return this._cell}}]),e}(),y=function(i){a(r,i);var n=c(r);function r(e,i){var o;return t(this,r),(o=n.call(this,e.table)).table=e.table,o.column=e,o.row=i,o.element=null,o.value=null,o.initialValue,o.oldValue=null,o.modules={},o.height=null,o.width=null,o.minWidth=null,o.component=null,o.loaded=!1,o.build(),o}return o(r,[{key:"build",value:function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value}},{key:"generateElement",value:function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element}},{key:"_configureCell",value:function(){var e=this,t=this.element,i=this.column.getField();(t.style.textAlign=this.column.hozAlign,this.column.vertAlign&&(t.style.display="inline-flex",t.style.alignItems={top:"flex-start",bottom:"flex-end",middle:"center"}[this.column.vertAlign]||"",this.column.hozAlign&&(t.style.justifyContent={left:"flex-start",right:"flex-end",center:"center"}[this.column.hozAlign]||"")),i&&t.setAttribute("tabulator-field",i),this.column.definition.cssClass)&&this.column.definition.cssClass.split(" ").forEach((function(e){t.classList.add(e)}));"hover"===this.table.options.tooltipGenerationMode&&t.addEventListener("mouseenter",(function(t){e._generateTooltip()})),this.dispatch("cell-init",this),this.column.visible||this.hide()}},{key:"_generateContents",value:function(){var t,i=this;switch(e(t=this.chain("cell-format",this,null,(function(){return i.element.innerHTML=i.value})))){case"object":if(t instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(t)}else this.element.innerHTML="",null!=t&&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:",t);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=t}}},{key:"cellRendered",value:function(){this.dispatch("cell-rendered",this)}},{key:"_generateTooltip",value:function(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")}},{key:"getElement",value:function(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}},{key:"getValue",value:function(){return this.value}},{key:"getOldValue",value:function(){return this.oldValue}},{key:"setValue",value:function(e,t){this.setValueProcessData(e,t)&&(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()))}},{key:"setValueProcessData",value:function(e,t){var i=!1;return this.value!==e&&(i=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),i&&this.dispatch("cell-value-changed",this),i}},{key:"setValueActual",value:function(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()}},{key:"layoutElement",value:function(){this._generateContents(),this._generateTooltip(),this.dispatch("cell-layout",this)}},{key:"setWidth",value:function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled}},{key:"clearWidth",value:function(){this.width="",this.element.style.width=""}},{key:"getWidth",value:function(){return this.width||this.element.offsetWidth}},{key:"setMinWidth",value:function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled}},{key:"setMaxWidth",value:function(){this.maxWidth=this.column.maxWidth,this.element.style.maxWidth=this.column.maxWidthStyled}},{key:"checkHeight",value:function(){this.row.reinitializeHeight()}},{key:"clearHeight",value:function(){this.element.style.height="",this.height=null}},{key:"setHeight",value:function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled}},{key:"getHeight",value:function(){return this.height||this.element.offsetHeight}},{key:"show",value:function(){this.element.style.display=this.column.vertAlign?"inline-flex":""}},{key:"hide",value:function(){this.element.style.display="none"}},{key:"delete",value:function(){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={}}},{key:"getIndex",value:function(){return this.row.getCellIndex(this)}},{key:"getComponent",value:function(){return this.component||(this.component=new b(this)),this.component}}]),r}(f),w=function(i){a(r,i);var n=c(r);function r(e,i){var o;return t(this,r),(o=n.call(this,i.table)).definition=e,o.parent=i,o.type="column",o.columns=[],o.cells=[],o.element=o.createElement(),o.contentElement=!1,o.titleHolderElement=!1,o.titleElement=!1,o.groupElement=o.createGroupElement(),o.isGroup=!1,o.tooltip=!1,o.hozAlign="",o.vertAlign="",o.field="",o.fieldStructure="",o.getFieldValue="",o.setFieldValue="",o.titleDownload=null,o.titleFormatterRendered=!1,o.mapDefinitions(),o.setField(o.definition.field),o.modules={},o.width=null,o.widthStyled="",o.maxWidth=null,o.maxWidthStyled="",o.maxInitialWidth=null,o.minWidth=null,o.minWidthStyled="",o.widthFixed=!1,o.visible=!0,o.component=null,o.definition.columns?(o.isGroup=!0,o.definition.columns.forEach((function(e,t){var i=new r(e,l(o));o.attachColumn(i)})),o.checkColumnVisibility()):i.registerColumnField(l(o)),o._initialize(),o.bindModuleColumns(),o}return o(r,[{key:"createElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e}},{key:"createGroupElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e}},{key:"mapDefinitions",value:function(){var e=this.table.options.columnDefaults;if(e)for(var t in e)void 0===this.definition[t]&&(this.definition[t]=e[t]);this.definition=this.table.columnManager.optionsList.generate(r.defaultOptionList,this.definition)}},{key:"checkDefinition",value:function(){var e=this;Object.keys(this.definition).forEach((function(t){-1===r.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)}))}},{key:"setField",value:function(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}},{key:"registerColumnPosition",value:function(e){this.parent.registerColumnPosition(e)}},{key:"registerColumnField",value:function(e){this.parent.registerColumnField(e)}},{key:"reRegisterPosition",value:function(){this.isGroup?this.columns.forEach((function(e){e.reRegisterPosition()})):this.registerColumnPosition(this)}},{key:"_mapDepricatedFunctionality",value:function(){}},{key:"setTooltip",value:function(){var e=this,t=this.definition,i=t.headerTooltip;i?!0===i?t.field?this.langBind("columns|"+t.field,(function(i){e.element.setAttribute("title",i||t.title)})):this.element.setAttribute("title",t.title):("function"==typeof i&&!1===(i=i(this.getComponent()))&&(i=""),this.element.setAttribute("title",i)):this.element.setAttribute("title","")}},{key:"_initialize",value:function(){for(var e=this,t=this.definition;this.element.firstChild;)this.element.removeChild(this.element.firstChild);t.headerVertical&&(this.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&this.element.classList.add("tabulator-col-vertical-flip")),this.contentElement=this._bindEvents(),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.setTooltip(),this.dispatch("column-init",this),this.element.addEventListener("mouseenter",(function(t){e.setTooltip()}))}},{key:"_bindEvents",value:function(){var e,t,i,n=this,o=this.definition;"function"==typeof o.headerClick&&this.element.addEventListener("click",(function(e){o.headerClick(e,n.getComponent())})),"function"==typeof o.headerDblClick&&this.element.addEventListener("dblclick",(function(e){o.headerDblClick(e,n.getComponent())})),"function"==typeof o.headerContext&&this.element.addEventListener("contextmenu",(function(e){o.headerContext(e,n.getComponent())})),"function"==typeof o.headerTap&&(i=!1,this.element.addEventListener("touchstart",(function(e){i=!0}),{passive:!0}),this.element.addEventListener("touchend",(function(e){i&&o.headerTap(e,n.getComponent()),i=!1}))),"function"==typeof o.headerDblTap&&(e=null,this.element.addEventListener("touchend",(function(t){e?(clearTimeout(e),e=null,o.headerDblTap(t,n.getComponent())):e=setTimeout((function(){clearTimeout(e),e=null}),300)}))),"function"==typeof o.headerTapHold&&(t=null,this.element.addEventListener("touchstart",(function(e){clearTimeout(t),t=setTimeout((function(){clearTimeout(t),t=null,i=!1,o.headerTapHold(e,this.getComponent())}),1e3)}),{passive:!0}),this.element.addEventListener("touchend",(function(e){clearTimeout(t),t=null})))}},{key:"_buildColumnHeader",value:function(){var e=this,t=this.definition;this.table;(this.dispatch("column-layout",this),void 0!==t.visible&&(t.visible?this.show(!0):this.hide(!0)),t.cssClass)&&t.cssClass.split(" ").forEach((function(t){e.element.classList.add(t)}));t.field&&this.element.setAttribute("tabulator-field",t.field),this.setMinWidth(parseInt(t.minWidth)),t.maxInitialWidth&&(this.maxInitialWidth=parseInt(t.maxInitialWidth)),t.maxWidth&&this.setMaxWidth(parseInt(t.maxWidth)),this.reinitializeWidth(),this.tooltip=this.definition.tooltip,this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}},{key:"_buildColumnHeaderContent",value:function(){this.definition,this.table;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}},{key:"_buildColumnHeaderTitle",value:function(){var e=this,t=this.definition,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),t.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("change",(function(){t.title=n.value,e.dispatchExternal("columnTitleChanged",e.getComponent())})),i.appendChild(n),t.field?this.langBind("columns|"+t.field,(function(e){n.value=e||t.title||" "})):n.value=t.title||" "}else t.field?this.langBind("columns|"+t.field,(function(n){e._formatColumnHeaderTitle(i,n||t.title||" ")})):this._formatColumnHeaderTitle(i,t.title||" ");return i}},{key:"_formatColumnHeaderTitle",value:function(t,i){var n=this.chain("column-format",[this,i,t],null,(function(){return i}));switch(e(n)){case"object":n instanceof Node?t.appendChild(n):(t.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:",n));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=n}}},{key:"_buildGroupHeader",value:function(){var e=this;(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((function(t){e.element.classList.add(t)}));this.titleElement.style.textAlign=this.definition.headerHozAlign,this.element.appendChild(this.groupElement)}},{key:"_getFlatData",value:function(e){return e[this.field]}},{key:"_getNestedData",value:function(e){for(var t,i=e,n=this.fieldStructure,o=n.length,a=0;a-1&&this.columns.splice(t,1),this.columns.length||this.delete()}},{key:"setWidth",value:function(e){this.widthFixed=!0,this.setWidthActual(e)}},{key:"setWidthActual",value:function(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)}},{key:"checkCellHeights",value:function(){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()}))}},{key:"getWidth",value:function(){var e=0;return this.isGroup?this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})):e=this.width,e}},{key:"getHeight",value:function(){return Math.ceil(this.element.getBoundingClientRect().height)}},{key:"setMinWidth",value:function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}},{key:"setMaxWidth",value:function(e){this.maxWidth=e,this.maxWidthStyled=e?e+"px":"",this.element.style.maxWidth=this.maxWidthStyled,this.cells.forEach((function(e){e.setMaxWidth()}))}},{key:"delete",value:function(){var e=this;return new Promise((function(t,i){e.isGroup&&e.columns.forEach((function(e){e.delete()})),e.dispatch("column-delete",e);for(var n=e.cells.length,o=0;o-1&&this._nextVisibleColumn(e+1)}},{key:"_nextVisibleColumn",value:function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)}},{key:"prevColumn",value:function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)}},{key:"_prevVisibleColumn",value:function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)}},{key:"reinitializeWidth",value:function(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)}},{key:"fitToData",value:function(e){if(!this.isGroup){this.widthFixed||(this.element.style.width="",this.cells.forEach((function(e){e.clearWidth()})));var t=this.element.offsetWidth;if((!this.width||!this.widthFixed)&&(this.cells.forEach((function(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)}}}},{key:"updateDefinition",value:function(e){var t,i=this;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((function(e){return t.field==i.field&&(i.field=!1),i.delete().then((function(){return e.getComponent()}))})))}},{key:"deleteCell",value:function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}},{key:"getComponent",value:function(){return this.component||(this.component=new g(this)),this.component}}]),r}(f);w.defaultOptionList=v;var C=function(){function i(){t(this,i)}return o(i,null,[{key:"elVisible",value:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)}},{key:"elOffset",value:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}}},{key:"deepClone",value:function(t,i){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a={}.__proto__,r=[].__proto__;i||(i=Object.assign(Array.isArray(t)?[]:{},t));var s=function(){var s=t[l],u=void 0,c=void 0;null==s||"object"!==e(s)||s.__proto__!==a&&s.__proto__!==r||((u=o.findIndex((function(e){return e.subject===s})))>-1?i[l]=o[u].copy:(c=Object.assign(Array.isArray(s)?[]:{},s),o.unshift({subject:s,copy:c}),i[l]=n.deepClone(s,c,o)))};for(var l in t)s();return i}}]),i}(),k=function(){function i(e,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t(this,i),this.table=e,this.msgType=n,this.registeredDefaults=Object.assign({},o)}return o(i,[{key:"register",value:function(e,t){this.registeredDefaults[e]=t}},{key:"generate",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object.assign({},this.registeredDefaults);if(Object.assign(n,t),!1!==i.debugInvalidOptions||this.table.options.debugInvalidOptions)for(var o in i)n.hasOwnProperty(o)||console.warn("Invalid "+this.msgType+" option:",o);for(var o in n)o in i?n[o]=i[o]:Array.isArray(n[o])?n[o]=Object.assign([],n[o]):"object"===e(n[o])&&null!==n[o]?n[o]=Object.assign({},n[o]):void 0===n[o]&&delete n[o];return n}}]),i}(),E=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).elementVertical=e.rowManager.element,o.elementHorizontal=e.columnManager.element,o.tableElement=e.rowManager.tableElement,o.verticalFillMode="fit",o}return o(n,[{key:"initialize",value:function(){}},{key:"clearRows",value:function(){}},{key:"clearColumns",value:function(){}},{key:"reinitializeColumnWidths",value:function(e){}},{key:"renderRows",value:function(){}},{key:"renderColumns",value:function(){}},{key:"rerenderRows",value:function(e){e&&e()}},{key:"rerenderColumns",value:function(e,t){}},{key:"renderRowCells",value:function(e){}},{key:"rerenderRowCells",value:function(e,t){}},{key:"scrollColumns",value:function(e,t){}},{key:"scrollRows",value:function(e,t){}},{key:"resize",value:function(){}},{key:"scrollToRow",value:function(e){}},{key:"scrollToRowNearestTop",value:function(e){}},{key:"visibleRows",value:function(e){return[]}},{key:"rows",value:function(){return this.table.rowManager.getDisplayRows()}},{key:"styleRow",value:function(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"))}},{key:"clear",value:function(){this.clearRows(),this.clearColumns()}},{key:"render",value:function(){this.renderRows(),this.renderColumns()}},{key:"rerender",value:function(e){this.rerenderRows(),this.rerenderColumns()}},{key:"scrollToRowPosition",value:function(e,t,i){var n=this,o=this.rows().indexOf(e),a=e.getElement(),r=0;return new Promise((function(s,l){if(o>-1){if(void 0===i&&(i=n.table.options.scrollToRowIfVisible),!i&&C.elVisible(a)&&(r=C.elOffset(a).top-C.elOffset(n.elementVertical).top)>0&&re&&(e=i)}})),this.windowBuffer=2*e}},{key:"rerenderColumns",value:function(e,t){var i=this,n={cols:this.columns,leftCol:this.leftCol,rightCol:this.rightCol},o=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((function(e){var t={};if(e.visible){var n=e.getWidth();t.leftPos=o,t.rightPos=o+n,t.width=n,i.isFitData&&(t.fitDataCheck=!e.modules.vdomHoz||e.modules.vdomHoz.fitDataCheck),o+n>i.vDomScrollPosLeft&&othis.windowBuffer/2?this.rerenderColumns():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())}},{key:"colPositionAdjust",value:function(e,t,i){for(var n=e;n=e.columns.length-1?e.vDomPadRight=0:e.vDomPadRight-=i.getWidth())):"break"};;){if("break"===i())break}t&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}},{key:"addColLeft",value:function(){for(var e=this,t=!1,i=function(){var i=e.columns[e.leftCol-1];if(!i)return"break";if(!(i.modules.vdomHoz.rightPos>=e.vDomScrollPosLeft))return"break";t=!0,e.getVisibleRows().forEach((function(e){if("group"!==e.type){var t=e.getCell(i);e.getElement().prepend(t.getElement()),t.cellRendered()}})),e.leftCol--,e.leftCol<=0?e.vDomPadLeft=0:e.vDomPadLeft-=i.getWidth();var n=e.fitDataColActualWidthCheck(i);n&&(e.scrollLeft=e.elementVertical.scrollLeft=e.elementVertical.scrollLeft+n,e.vDomPadRight-=n)};;){if("break"===i())break}t&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}},{key:"removeColRight",value:function(){for(var e=this,t=!1,i=function(){var i=e.columns[e.rightCol];return i&&i.modules.vdomHoz.leftPos>e.vDomScrollPosRight?(t=!0,e.getVisibleRows().forEach((function(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)}}})),e.vDomPadRight+=i.getWidth(),void e.rightCol--):"break"};;){if("break"===i())break}t&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}},{key:"removeColLeft",value:function(){for(var e=this,t=!1,i=function(){var i=e.columns[e.leftCol];return i&&i.modules.vdomHoz.rightPosi?(t=e-i,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.renderer.scrollColumns(e)}},{key:"generateColumnsFromRowData",value:function(t){var i,n,o=[],a=this.table.options.autoColumnsDefinitions;if(t&&t.length){for(var r in i=t[0]){var s={field:r,title:r},l=i[r];switch(e(l)){case"undefined":n="string";break;case"boolean":n="boolean";break;case"object":n=Array.isArray(l)?"array":"string";break;default:n=isNaN(l)||""===l?l.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=n,o.push(s)}if(a)switch(e(a)){case"function":this.table.options.columns=a.call(this.table,o);break;case"object":Array.isArray(a)?o.forEach((function(e){var t=a.find((function(t){return t.field===e.field}));t&&Object.assign(e,t)})):o.forEach((function(e){a[e.field]&&Object.assign(e,a[e.field])})),this.table.options.columns=o}else this.table.options.columns=o;this.setColumns(this.table.options.columns)}}},{key:"setColumns",value:function(e,t){for(var i=this;this.headersElement.firstChild;)this.headersElement.removeChild(this.headersElement.firstChild);this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.dispatch("columns-loading"),e.forEach((function(e,t){i._addColumn(e)})),this._reIndexColumns(),this.dispatch("columns-loaded"),this.renderer.rerenderColumns(!1,!0),this.redraw(!0)}},{key:"_addColumn",value:function(e,t,i){var n=new w(e,this),o=n.getElement(),a=i?this.findColumnIndex(i):i;if(i&&a>-1){var r=i.getTopColumn(),s=this.columns.indexOf(r),l=r.getElement();t?(this.columns.splice(s,0,n),l.parentNode.insertBefore(o,l)):(this.columns.splice(s+1,0,n),l.parentNode.insertBefore(o,l.nextSibling))}else t?(this.columns.unshift(n),this.headersElement.insertBefore(n.getElement(),this.headersElement.firstChild)):(this.columns.push(n),this.headersElement.appendChild(n.getElement()));return n.columnRendered(),n}},{key:"registerColumnField",value:function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)}},{key:"registerColumnPosition",value:function(e){this.columnsByIndex.push(e)}},{key:"_reIndexColumns",value:function(){this.columnsByIndex=[],this.columns.forEach((function(e){e.reRegisterPosition()}))}},{key:"verticalAlignHeaders",value:function(){var e=this,t=0;this.columns.forEach((function(e){var i;e.clearVerticalAlign(),(i=e.getHeight())>t&&(t=i)})),this.columns.forEach((function(i){i.verticalAlign(e.table.options.columnHeaderVertAlign,t)})),this.table.rowManager.adjustTableSize()}},{key:"findColumn",value:function(t){return"object"!=e(t)?this.columnsByField[t]||!1:t instanceof w?t:t instanceof g?t._getSelf()||!1:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&this.columns.find((function(e){return e.element===t}))||!1}},{key:"getColumnByField",value:function(e){return this.columnsByField[e]}},{key:"getColumnsByFieldRoot",value:function(e){var t=this,i=[];return Object.keys(this.columnsByField).forEach((function(n){n.split(".")[0]===e&&i.push(t.columnsByField[n])})),i}},{key:"getColumnByIndex",value:function(e){return this.columnsByIndex[e]}},{key:"getFirstVisibleColumn",value:function(e){return(e=this.columnsByIndex.findIndex((function(e){return e.visible})))>-1&&this.columnsByIndex[e]}},{key:"getColumns",value:function(){return this.columns}},{key:"findColumnIndex",value:function(e){return this.columnsByIndex.findIndex((function(t){return e===t}))}},{key:"getRealColumns",value:function(){return this.columnsByIndex}},{key:"traverse",value:function(e){this.columnsByIndex.forEach((function(t,i){e(t,i)}))}},{key:"getDefinitions",value:function(e){var t=[];return this.columnsByIndex.forEach((function(i){(!e||e&&i.visible)&&t.push(i.getDefinition())})),t}},{key:"getDefinitionTree",value:function(){var e=[];return this.columns.forEach((function(t){e.push(t.getDefinition(!0))})),e}},{key:"getComponents",value:function(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach((function(e){t.push(e.getComponent())})),t}},{key:"getWidth",value:function(){var e=0;return this.columnsByIndex.forEach((function(t){t.visible&&(e+=t.getWidth())})),e}},{key:"moveColumn",value:function(e,t,i){this.moveColumnActual(e,t,i),t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),this.verticalAlignHeaders(),this.table.rowManager.reinitialize()}},{key:"moveColumnActual",value:function(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.renderer.rerenderColumns(!0),this.dispatch("column-moved",e,t,i),this.subscribedExternal("columnMoved")&&this.dispatchExternal("columnMoved",e.getComponent(),this.table.columnManager.getComponents())}},{key:"_moveColumnInArray",value:function(e,t,i,n,o){var a,r=e.indexOf(t);r>-1&&(e.splice(r,1),(a=e.indexOf(i))>-1?n&&(a+=1):a=r,e.splice(a,0,t),o&&(this.chain("column-moving-rows",[t,i,n],null,[])||[]).concat(this.table.rowManager.rows).forEach((function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(a,0,t)}})))}},{key:"scrollToColumn",value:function(e,t,i){var n=this,o=0,a=0,r=0,s=e.getElement();return new Promise((function(l,u){if(void 0===t&&(t=n.table.options.scrollToColumnPosition),void 0===i&&(i=n.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":r=-n.element.clientWidth/2;break;case"right":r=s.clientWidth-n.headersElement.clientWidth}if(!i&&(a=s.offsetLeft)>0&&a+s.offsetWidththis.table.rowManager.element.clientHeight&&(e-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(i){var n,o,a;i.visible&&(n=i.definition.width||0,o=parseInt(i.minWidth),a="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,t+=a>o?a:o)})),t}},{key:"addColumn",value:function(e,t,i){var n=this;return new Promise((function(o,a){var r=n._addColumn(e,t,i);n._reIndexColumns(),n.dispatch("column-add",e,t,i),"fitColumns"!=n.layoutMode()&&r.reinitializeWidth(),n.redraw(!0),n.table.rowManager.reinitialize(),n.renderer.rerenderColumns(),o(r)}))}},{key:"deregisterColumn",value:function(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()}},{key:"redraw",value:function(e){C.elVisible(this.element)&&this.verticalAlignHeaders(),e&&(this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}]),r}(f),M=function(){function e(i){return t(this,e),this._row=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}return o(e,[{key:"getData",value:function(e){return this._row.getData(e)}},{key:"getElement",value:function(){return this._row.getElement()}},{key:"getCells",value:function(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}},{key:"getCell",value:function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}},{key:"getIndex",value:function(){return this._row.getData("data")[this._row.table.options.index]}},{key:"getPosition",value:function(e){return this._row.table.rowManager.getRowPosition(this._row,e)}},{key:"delete",value:function(){return this._row.delete()}},{key:"scrollTo",value:function(){return this._row.table.rowManager.scrollToRow(this._row)}},{key:"move",value:function(e,t){this._row.moveToRow(e,t)}},{key:"update",value:function(e){return this._row.updateData(e)}},{key:"normalizeHeight",value:function(){this._row.normalizeHeight(!0)}},{key:"_getSelf",value:function(){return this._row}},{key:"reformat",value:function(){return this._row.reinitialize()}},{key:"getTable",value:function(){return this._row.table}},{key:"getNextRow",value:function(){var e=this._row.nextRow();return e?e.getComponent():e}},{key:"getPrevRow",value:function(){var e=this._row.prevRow();return e?e.getComponent():e}}]),e}(),L=function(e){a(n,e);var i=c(n);function n(e,o){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";return t(this,n),(a=i.call(this,o.table)).parent=o,a.data={},a.type=r,a.element=!1,a.modules={},a.cells=[],a.height=0,a.heightStyled="",a.manualHeight=!1,a.outerHeight=0,a.initialized=!1,a.heightInitialized=!1,a.component=null,a.created=!1,a.setData(e),a}return o(n,[{key:"create",value:function(){this.created||(this.created=!0,this.generateElement())}},{key:"createElement",value:function(){var e=document.createElement("div");e.classList.add("tabulator-row"),e.setAttribute("role","row"),this.element=e}},{key:"getElement",value:function(){return this.create(),this.element}},{key:"detachElement",value:function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}},{key:"generateElement",value:function(){this.createElement(),this.dispatch("row-init",this)}},{key:"generateCells",value:function(){this.cells=this.table.columnManager.generateCells(this)}},{key:"initialize",value:function(e){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),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)}},{key:"reinitializeHeight",value:function(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}},{key:"deinitializeHeight",value:function(){this.heightInitialized=!1}},{key:"reinitialize",value:function(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)}},{key:"calcHeight",value:function(e){var t=0,i=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach((function(e){var i=e.getHeight();i>t&&(t=i)})),this.height=e?Math.max(t,i):this.manualHeight?this.height:Math.max(t,i),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight}},{key:"setCellHeight",value:function(){this.cells.forEach((function(e){e.setHeight()})),this.heightInitialized=!0}},{key:"clearCellHeight",value:function(){this.cells.forEach((function(e){e.clearHeight()}))}},{key:"normalizeHeight",value:function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()}},{key:"setHeight",value:function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)}},{key:"getHeight",value:function(){return this.outerHeight}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"deleteCell",value:function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}},{key:"setData",value:function(e){this.data=this.chain("row-data-init-before",[this,e],void 0,e),this.dispatch("row-data-init-after",this)}},{key:"updateData",value:function(e){var t,i=this,n=this.element&&C.elVisible(this.element),o={};return new Promise((function(a,r){for(var s in"string"==typeof e&&(e=JSON.parse(e)),i.dispatch("row-data-save-before",i),i.subscribed("row-data-changing")&&(o=Object.assign(o,i.data),o=Object.assign(o,e)),t=i.chain("row-data-changing",[i,o,e],null,e))i.data[s]=t[s];for(var s in i.dispatch("row-data-save-after",i),e){i.table.columnManager.getColumnsByFieldRoot(s).forEach((function(e){var o=i.getCell(e.getField());if(o){var a=e.getFieldValue(t);o.getValue()!=a&&(o.setValueProcessData(a),n&&o.cellRendered())}}))}n?(i.normalizeHeight(!0),i.table.options.rowFormatter&&i.table.options.rowFormatter(i.getComponent())):(i.initialized=!1,i.height=0,i.heightStyled=""),i.dispatch("row-data-changed",i,n,e),i.dispatchExternal("rowUpdated",i.getComponent()),i.subscribedExternal("dataChanged")&&i.dispatchExternal("dataChanged",i.table.rowManager.getData()),a()}))}},{key:"getData",value:function(e){return e?this.chain("row-data-retrieve",[this,e],null,this.data):this.data}},{key:"getCell",value:function(e){return e=this.table.columnManager.findColumn(e),this.initialized||this.generateCells(),this.cells.find((function(t){return t.column===e}))}},{key:"getCellIndex",value:function(e){return this.cells.findIndex((function(t){return t===e}))}},{key:"findCell",value:function(e){return this.cells.find((function(t){return t.element===e}))}},{key:"getCells",value:function(){return this.initialized||this.generateCells(),this.cells}},{key:"nextRow",value:function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1}},{key:"prevRow",value:function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1}},{key:"moveToRow",value:function(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)}},{key:"delete",value:function(){return this.dispatch("row-delete",this),this.deleteActual(),Promise.resolve()}},{key:"deleteActual",value:function(e){this.table.rowManager.getRowIndex(this);this.detatchModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}},{key:"detatchModules",value:function(){this.dispatch("row-deleting",this)}},{key:"deleteCells",value:function(){for(var e=this.cells.length,t=0;tMath.abs(this.elementVertical.scrollTop+this.elementVertical.clientHeight-t))}},{key:"scrollToRow",value:function(e){var t=e.getElement();this.elementVertical.scrollTop=C.elOffset(t).top-C.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}},{key:"visibleRows",value:function(e){return this.rows()}}]),n}(E),S=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).verticalFillMode="fill",o.scrollTop=0,o.scrollLeft=0,o.vDomRowHeight=20,o.vDomTop=0,o.vDomBottom=0,o.vDomScrollPosTop=0,o.vDomScrollPosBottom=0,o.vDomTopPad=0,o.vDomBottomPad=0,o.vDomMaxRenderChain=90,o.vDomWindowBuffer=0,o.vDomWindowMinTotalRows=20,o.vDomWindowMinMarginRows=5,o.vDomTopNewRows=[],o.vDomBottomNewRows=[],o}return o(n,[{key:"clearRows",value:function(){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}},{key:"renderRows",value:function(){this._virtualRenderFill()}},{key:"rerenderRows",value:function(e){for(var t=this.elementVertical.scrollTop,i=!1,n=!1,o=this.table.rowManager.scrollLeft,a=this.rows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(a[r]){var s=t-a[r].getElement().offsetTop;if(!(!1===n||Math.abs(s)o||n>o){var r=this.table.rowManager.scrollLeft;this._virtualRenderFill(Math.floor(this.elementVertical.scrollTop/this.elementVertical.scrollHeight*a.length)),this.scrollColumns(r)}else t?(i<0&&this._addTopRow(a,-i),n<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(a,-n):this.vDomScrollPosBottom=this.scrollTop)):(n>=0&&this._addBottomRow(a,n),i>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(a,i):this.vDomScrollPosTop=this.scrollTop))}},{key:"resize",value:function(){this.vDomWindowBuffer=this.table.options.renderVerticalBuffer||this.elementVertical.clientHeight}},{key:"scrollToRowNearestTop",value:function(e){var t=this.rows().indexOf(e);return!(Math.abs(this.vDomTop-t)>Math.abs(this.vDomBottom-t))}},{key:"scrollToRow",value:function(e){var t=this.rows().indexOf(e);t>-1&&this._virtualRenderFill(t,!0)}},{key:"visibleRows",value:function(e){var t=this.elementVertical.scrollTop,i=this.elementVertical.clientHeight+t,n=!1,o=0,a=0,r=this.rows();if(e)o=this.vDomTop,a=this.vDomBottom;else for(var s=this.vDomTop;s<=this.vDomBottom;s++)if(r[s])if(n){if(!(i-r[s].getElement().offsetTop>=0))break;a=s}else if(t-r[s].getElement().offsetTop>=0)o=s;else{if(n=!0,!(i-r[s].getElement().offsetTop>=0))break;a=s}return r.slice(o,a+1)}},{key:"_virtualRenderFill",value:function(e,t,i){var n=this.tableElement,o=this.elementVertical,a=0,r=0,s=0,l=0,u=0,c=this.rows(),h=c.length,d=this.elementVertical.clientHeight;if(i=i||0,e=e||0){for(;n.firstChild;)n.removeChild(n.firstChild);(s=(h-e+1)*this.vDomRowHeight)this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*m),this.vDomBottom++,u++}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+i:this.scrollTop-l,this.vDomBottomPad=this.vDomBottom==h-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-r-l,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((r+l)/u),this.vDomBottomPad=this.vDomRowHeight*(h-this.vDomBottom-1),this.vDomScrollHeight=l+r+this.vDomBottomPad-d),n.style.paddingTop=this.vDomTopPad+"px",n.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+l+i-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-d:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-d),this.elementVertical.scrollWidth>this.elementVertical.offsetWidth&&t&&(this.scrollTop+=this.elementVertical.offsetHeight-d),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,o.scrollTop=this.scrollTop,this.dispatch("render-virtual-fill")}}},{key:"_addTopRow",value:function(e,t){for(var i=this.tableElement,n=[],o=0,a=this.vDomTop-1,r=0;this.vDomTop;){var s=e[a],l=void 0,u=void 0;if(!(s&&r=l))break;this.styleRow(s,a),i.insertBefore(s.getElement(),i.firstChild),s.initialized&&s.heightInitialized||n.push(s),s.initialize(),u||(l=s.getElement().offsetHeight)>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l),t-=l,o+=l,this.vDomTop--,a--,r++}for(var c=0,h=n;c=(r=a.getHeight()||this.vDomRowHeight)))break;this.vDomTop++,t-=r,n+=r,i.push(a),o++}for(var s=0,l=i;s=l))break;this.styleRow(s,a),i.appendChild(s.getElement()),s.initialized&&s.heightInitialized||n.push(s),s.initialize(),u||(l=s.getElement().offsetHeight)>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l),t-=l,o+=l,this.vDomBottom++,a++,r++}for(var c=0,h=n;c=(r=a.getHeight()||this.vDomRowHeight)))break;this.vDomBottom--,t-=r,n+=r,i.push(a),o++}for(var s=0,l=i;st,n=e.element.scrollTop,o=e.scrollTop>n;e.scrollLeft!=t&&(e.scrollLeft=t,e.dispatch("scroll-horizontal",t,i),e.dispatchExternal("scrollHorizontal",t,i),e._positionPlaceholder()),e.scrollTop!=n&&(e.scrollTop=n,e.renderer.scrollRows(n,o),e.dispatch("scroll-vertical",n,o),e.dispatchExternal("scrollVertical",n,o))}))}},{key:"findRow",value:function(t){var i=this;return"object"!=e(t)?null!=t&&(this.rows.find((function(e){return e.data[i.table.options.index]==t}))||!1):t instanceof L?t:t instanceof M?t._getSelf()||!1:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&this.rows.find((function(e){return e.getElement()===t}))||!1}},{key:"getRowFromDataObject",value:function(e){return this.rows.find((function(t){return t.data===e}))||!1}},{key:"getRowFromPosition",value:function(e,t){return t?this.activeRows[e]:this.rows[e]}},{key:"scrollToRow",value:function(e,t,i){return this.renderer.scrollToRowPosition(e,t,i)}},{key:"setData",value:function(e,t,i){var n=this;return new Promise((function(o,a){t&&n.getDisplayRows().length?n.table.options.pagination?n._setDataActual(e,!0):n.reRenderInPosition((function(){n._setDataActual(e)})):(n.table.options.autoColumns&&i&&n.table.initialized&&n.table.columnManager.generateColumnsFromRowData(e),n.resetScroll(),n._setDataActual(e)),o()}))}},{key:"_setDataActual",value:function(t,i){var n=this;this.dispatchExternal("dataProcessing",t),this._wipeElements(),Array.isArray(t)?(this.dispatch("data-processing",t),t.forEach((function(t,i){if(t&&"object"===e(t)){var o=new L(t,n);n.rows.push(o)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)})),this.refreshActiveData(!1,!1,i),this.dispatch("data-processed",t),this.dispatchExternal("dataProcessed",t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",e(t),"\nData: ",t)}},{key:"_wipeElements",value:function(){this.dispatch("rows-wipe"),this.rows.forEach((function(e){e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.adjustTableSize()}},{key:"deleteRow",value:function(e,t){var i=this.rows.indexOf(e),n=this.activeRows.indexOf(e);n>-1&&this.activeRows.splice(n,1),i>-1&&this.rows.splice(i,1),this.setActiveRows(this.activeRows),this.displayRowIterator((function(t){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this._showPlaceholder(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}},{key:"addRow",value:function(e,t,i,n){return this.addRowActual(e,t,i,n)}},{key:"addRows",value:function(e,t,i){var n=this,o=[];return new Promise((function(a,r){t=n.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length,(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach((function(a,r){var s=n.addRow(a,t,i,!0);o.push(s),n.dispatch("row-added",s,e,t,i)})),n.refreshActiveData(!1,!1,!0),n.regenerateRowNumbers(),o.length&&n._clearPlaceholder(),a(o)}))}},{key:"findAddRowPos",value:function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e}},{key:"addRowActual",value:function(e,t,i,n){var o,a,r=e instanceof L?e:new L(e||{},this),s=this.findAddRowPos(t),l=-1;return i||(a=this.chain("row-adding-position",[r,s],null,{index:i,top:s}),i=a.index,s=a.top),void 0!==i&&(i=this.findRow(i)),(i=this.chain("row-adding-index",[r,i,s],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(s?t:t+1,0,r)})),o>-1&&this.activeRows.splice(s?o:o+1,0,r),this.rows.splice(s?l:l+1,0,r)):s?(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()),n||this.reRenderInPosition(),r}},{key:"moveRow",value:function(e,t,i){this.dispatch("row-move",e,t,i),this.moveRowActual(e,t,i),this.regenerateRowNumbers(),this.dispatch("row-moved",e,t,i),this.dispatchExternal("rowMoved",e.getComponent())}},{key:"moveRowActual",value:function(e,t,i){var n=this;this.moveRowInArray(this.rows,e,t,i),this.moveRowInArray(this.activeRows,e,t,i),this.displayRowIterator((function(o){n.moveRowInArray(o,e,t,i)})),this.dispatch("row-moving",e,t,i)}},{key:"moveRowInArray",value:function(e,t,i,n){var o,a,r;if(t!==i&&((o=e.indexOf(t))>-1&&(e.splice(o,1),(a=e.indexOf(i))>-1?n?e.splice(a+1,0,t):e.splice(a,0,t):e.splice(o,0,t)),e===this.getDisplayRows())){r=a>o?a:o+1;for(var s=o-1&&t}},{key:"nextDisplayRow",value:function(e,t){var i=this.getDisplayRowIndex(e),n=!1;return!1!==i&&i-1)&&i}},{key:"getData",value:function(e,t){var i=[];return this.getRows(e).forEach((function(e){"row"==e.type&&i.push(e.getData(t||"data"))})),i}},{key:"getComponents",value:function(e){var t=[];return this.getRows(e).forEach((function(e){t.push(e.getComponent())})),t}},{key:"getDataCount",value:function(e){return this.getRows(e).length}},{key:"scrollHorizontal",value:function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.dispatch("scroll-horizontal",e)}},{key:"registerDataPipelineHandler",value:function(e,t){void 0!==t?(this.dataPipeline.push({handler:e,priority:t}),this.dataPipeline.sort((function(e,t){return e.priority-t.priority}))):console.error("Data pipeline handlers must have a priority in order to be registered")}},{key:"registerDisplayPipelineHandler",value:function(e,t){void 0!==t?(this.displayPipeline.push({handler:e,priority:t}),this.displayPipeline.sort((function(e,t){return e.priority-t.priority}))):console.error("Display pipeline handlers must have a priority in order to be registered")}},{key:"refreshActiveData",value:function(e,t,i){var n=this.table,o="",a=0,r=["all","dataPipeline","display","displayPipeline","end"];if("function"==typeof e)if((a=this.dataPipeline.findIndex((function(t){return t.handler===e})))>-1)o="dataPipeline",t&&(a==this.dataPipeline.length-1?o="display":a++);else{if(!((a=this.displayPipeline.findIndex((function(t){return t.handler===e})))>-1))return void console.error("Unable to refresh data, invalid handler provided",e);o="displayPipeline",t&&(a==this.displayPipeline.length-1?o="end":a++)}else o=e||"all",a=0;this.redrawBlock?(!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===o&&a-1&&(n.splice(o,1),a=!0),"mouseenter"!==t&&"mouseleave"!==t||this.pseudoTracking||this.bindPseudoEvents(),a&&this.updateEventListeners()}},{key:"updateEventListeners",value:function(){for(var e in this.listeners){var 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)}}},{key:"track",value:function(e,t){var i=t.composedPath&&t.composedPath()||t.path,n=this.findTargets(i);n=this.bindComponents(e,n),this.triggerEvents(e,t,n),!this.pseudoTracking||"mouseover"!=e&&"mouseleave"!=e||Object.keys(n).length||this.pseudoMouseLeave("none",t)}},{key:"findTargets",value:function(e){var t,i=this,n={},o=Object.keys(this.componentMap),a=p(e);try{for(a.s();!(t=a.n()).done;){var r=t.value,s=r.classList?h(r.classList):[];if(s.filter((function(e){return i.abortClasses.includes(e)})).length)break;var l,u=p(s.filter((function(e){return o.includes(e)})));try{for(u.s();!(l=u.n()).done;){var c=l.value;n[this.componentMap[c]]=r}}catch(e){u.e(e)}finally{u.f()}}}catch(e){a.e(e)}finally{a.f()}return n.group&&n.group===n.row&&delete n.row,n}},{key:"bindComponents",value:function(e,t){var i,n=this,o=Object.keys(t).reverse(),a=this.listeners[e],r={},s=p(o);try{var l=function(){var e=i.value,o=void 0,s=t[e],l=n.previousTargets[e];if(l&&l.target===s)o=l.component;else switch(e){case"row":case"group":if(a.components.includes("row")||a.components.includes("cell")||a.components.includes("group"))o=n.table.rowManager.getVisibleRows(!0).find((function(e){return e.getElement()===s})),t.row&&t.row.parentNode&&t.row.parentNode.closest(".tabulator-row")&&(t[e]=!1);break;case"column":a.components.includes("column")&&(o=n.table.columnManager.findColumn(s));break;case"cell":a.components.includes("cell")&&(t.row instanceof L?o=t.row.findCell(s):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?"))}o&&(t[e]=o,r[e]={target:s,component:o})};for(s.s();!(i=s.n()).done;)l()}catch(e){s.e(e)}finally{s.f()}return this.previousTargets=r,t}},{key:"triggerEvents",value:function(e,t,i){var n=this.listeners[e];for(var o in i)i[o]&&n.components.includes(o)&&this.dispatch(o+"-"+e,t,i[o])}},{key:"clearWatchers",value:function(){for(var e in this.listeners){var t=this.listeners[e];t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}}]),n}(f),H=function(){function e(i){t(this,e),this.table=i,this.bindings={}}return o(e,[{key:"bind",value:function(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,hanlder):this.bindings[e][t]=i}},{key:"handle",value:function(e,t,i){if(this.bindings[e]&&this.bindings[e][i])return this.bindings[e][i].bind(null,t);"then"===i||"string"!=typeof i||i.startsWith("_")||console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}]),e}(),A=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).loaderElement=i.createLoaderElement(),i.msgElement=i.createMsgElement(),i.loadingElement=null,i.errorElement=null,i.requestOrder=0,i.loading=!1,i}return o(r,[{key:"initialize",value:function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.dataLoaderLoading&&("string"==typeof this.table.options.dataLoaderLoading?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderLoading.trim(),this.loadingElement=e.firstElementChild):this.loadingElement=this.table.options.dataLoaderLoading),this.table.options.dataLoaderError&&("string"==typeof this.table.options.dataLoaderError?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderError.trim(),this.errorElement=e.firstElementChild):this.errorElement=this.table.options.dataLoaderError)}},{key:"createLoaderElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e}},{key:"createMsgElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e}},{key:"load",value:function(t,i,n,o,a){var r=this,s=++this.requestOrder;return this.dispatchExternal("dataLoading",t),!t||0!=t.indexOf("{")&&0!=t.indexOf("[")||(t=JSON.parse(t)),this.confirm("data-loading",[t,i,n,a])?(this.loading=!0,a||this.showLoader(),i=this.chain("data-params",[t,n,a],i||{},i||{}),i=this.mapParams(i,this.table.options.dataSendParams),this.chain("data-load",[t,i,n,a],!1,Promise.resolve([])).then((function(t){Array.isArray(t)||"object"!=e(t)||(t=r.mapParams(t,r.objectInvert(r.table.options.dataReceiveParams)));var i=r.chain("data-loaded",t,null,t);s==r.requestOrder?(r.hideLoader(),!1!==i&&(r.dispatchExternal("dataLoaded",i),r.table.rowManager.setData(i,o,!o))):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((function(e){console.error("Data Load Error: ",e),r.dispatchExternal("dataLoadError",e),a||r.showError(),setTimeout((function(){r.hideLoader()}),r.table.options.dataLoaderErrorTimeout)})).finally((function(){r.loading=!1}))):(this.dispatchExternal("dataLoaded",t),t||(t=[]),this.table.rowManager.setData(t,o,!o),Promise.resolve())}},{key:"mapParams",value:function(e,t){var i={};for(var n in e)i[t.hasOwnProperty(n)?t[n]:n]=e[n];return i}},{key:"objectInvert",value:function(e){var t={};for(var i in e)t[e[i]]=i;return t}},{key:"blockActiveLoad",value:function(){this.requestOrder++}},{key:"showLoader",value:function(){if("function"==typeof this.table.options.dataLoader?this.table.options.dataLoader():this.table.options.dataLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.langText("data|loading"),this.table.element.appendChild(this.loaderElement)}}},{key:"showError",value:function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.langText("data|error"),this.table.element.appendChild(this.loaderElement)}},{key:"hideLoader",value:function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)}}]),r}(f),O=function(){function e(i,n,o){t(this,e),this.table=i,this.events={},this.optionsList=n||{},this.subscriptionNotifiers={},this.dispatch=o?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=o}return o(e,[{key:"subscriptionChange",value:function(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}},{key:"subscribe",value:function(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifiySubscriptionChange(e,!0)}},{key:"unsubscribe",value:function(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((function(e){return 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._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}},{key:"subscribed",value:function(e){return this.events[e]&&this.events[e].length}},{key:"_notifiySubscriptionChange",value:function(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((function(e){e(t)}))}},{key:"_dispatch",value:function(){var e,t=this,i=Array.from(arguments),n=i.shift();return this.events[n]&&this.events[n].forEach((function(n,o){var a=n.apply(t.table,i);o||(e=a)})),e}},{key:"_debugDispatch",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="ExternalEvent:"+t[0],!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._dispatch.apply(this,arguments)}}]),e}(),_=function(){function e(i){t(this,e),this.events={},this.subscriptionNotifiers={},this.dispatch=i?this._debugDispatch.bind(this):this._dispatch.bind(this),this.chain=i?this._debugChain.bind(this):this._chain.bind(this),this.confirm=i?this._debugConfirm.bind(this):this._confirm.bind(this),this.debug=i}return o(e,[{key:"subscriptionChange",value:function(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}},{key:"subscribe",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e4;this.events[e]||(this.events[e]=[]),this.events[e].push({callback:t,priority:i}),this.events[e].sort((function(e,t){return e.priority-t.priority})),this._notifiySubscriptionChange(e,!0)}},{key:"unsubscribe",value:function(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((function(e){return e.callback===t})))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}this._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}},{key:"subscribed",value:function(e){return this.events[e]&&this.events[e].length}},{key:"_chain",value:function(e,t,i,n){var o=this,a=i;return Array.isArray(t)||(t=[t]),this.subscribed(e)?(this.events[e].forEach((function(e,i){a=e.callback.apply(o,t.concat([a]))})),a):"function"==typeof n?n():n}},{key:"_confirm",value:function(e,t){var i=this,n=!1;return Array.isArray(t)||(t=[t]),this.subscribed(e)&&this.events[e].forEach((function(e,o){e.callback.apply(i,t)&&(n=!0)})),n}},{key:"_notifiySubscriptionChange",value:function(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((function(e){e(t)}))}},{key:"_dispatch",value:function(){var e=this,t=Array.from(arguments),i=t.shift();this.events[i]&&this.events[i].forEach((function(i){i.callback.apply(e,t)}))}},{key:"_debugDispatch",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._dispatch.apply(this,arguments)}},{key:"_debugChain",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._chain.apply(this,arguments)}},{key:"_debugConfirm",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._confirm.apply(this,arguments)}}]),e}(),B=function(){function e(){t(this,e)}return o(e,null,[{key:"register",value:function(t){e.tables.push(t)}},{key:"deregister",value:function(t){var i=e.tables.indexOf(t);i>-1&&e.tables.splice(i,1)}},{key:"lookupTable",value:function(t,i){var n,o,a=[];if("string"==typeof t){if((n=document.querySelectorAll(t)).length)for(var r=0;r0?a.setWidth(o):a.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,i,n=this.table.element.clientWidth,o=0,a=0,r=0,s=[],l=[],u=0,c=0;function h(e){return"string"==typeof e?e.indexOf("%")>-1?n/100*parseInt(e):parseInt(e):e}function d(e,t,i,n){var o=[],a=0,s=0,l=0,u=r,c=0,m=0,p=[];function f(e){return i*(e.column.definition.widthGrow||1)}function g(e){return h(e.width)-i*(e.column.definition.widthShrink||0)}return e.forEach((function(e,a){var r=n?g(e):f(e);e.column.minWidth>=r?o.push(e):e.column.maxWidth&&e.column.maxWidththis.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach((function(e){var t,i,n;e.visible&&(t=e.definition.width,i=parseInt(e.minWidth),t?(n=h(t),o+=n>i?n:i,e.definition.widthShrink&&(l.push({column:e,width:n>i?n:i}),u+=e.definition.widthShrink)):(s.push({column:e,width:0}),r+=e.definition.widthGrow||1))})),a=n-o,t=Math.floor(a/r),c=d(s,a,t,!1),s.length&&c>0&&(s[s.length-1].width+=+c),s.forEach((function(e){a-=e.width})),(i=Math.abs(c)+a)>0&&u&&(c=d(l,i,Math.floor(i/u),!0)),l.length&&(l[l.length-1].width-=c),s.forEach((function(e){e.column.setWidth(e.width)})),l.forEach((function(e){e.column.setWidth(e.width)}))}},W=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e,"layout")).mode=null,o.registerTableOption("layout","fitData"),o.registerTableOption("layoutColumnsOnNewData",!1),o.registerColumnOption("widthGrow"),o.registerColumnOption("widthShrink"),o}return o(n,[{key:"initialize",value:function(){var e=this.table.options.layout;n.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)}},{key:"getMode",value:function(){return this.mode}},{key:"layout",value:function(){this.dispatch("layout-refreshing"),n.modes[this.mode].call(this,this.table.columnManager.columnsByIndex),this.dispatch("layout-refreshed")}}]),n}(N);W.moduleName="layout",W.modes=I;var j=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).locale="default",i.lang=!1,i.bindings={},i.langList={},i.registerTableOption("locale",!1),i.registerTableOption("langs",{}),i}return o(r,[{key:"initialize",value:function(){for(var e in this.langList=C.deepClone(r.langs),!1!==this.table.options.columnDefaults.headerFilterPlaceholder&&this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder),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))}},{key:"setHeaderFilterPlaceholder",value:function(e){this.langList.default.headerFilters.default=e}},{key:"setHeaderFilterColumnPlaceholder",value:function(e,t){this.langList.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)}},{key:"installLang",value:function(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t}},{key:"_setLangProp",value:function(t,i){for(var n in i)t[n]&&"object"==e(t[n])?this._setLangProp(t[n],i[n]):t[n]=i[n]}},{key:"setLocale",value:function(t){if(!0===(t=t||"default")&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!this.langList[t]){var i=t.split("-")[0];this.langList[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",t,i),t=i):(console.warn("Localization Error - Matching locale not found, using default: ",t),t="default")}this.locale=t,this.lang=C.deepClone(this.langList.default||{}),"default"!=t&&function t(i,n){for(var o in i)"object"==e(i[o])?(n[o]||(n[o]={}),t(i[o],n[o])):n[o]=i[o]}(this.langList[t],this.lang),this.dispatchExternal("localized",this.locale,this.lang),this._executeBindings()}},{key:"getLocale",value:function(e){return this.locale}},{key:"getLang",value:function(e){return e?this.langList[e]:this.lang}},{key:"getText",value:function(e,t){var i=(e=t?e+"|"+t:e).split("|");return this._getLangElement(i,this.locale)||""}},{key:"_getLangElement",value:function(e,t){var i=this.lang;return e.forEach((function(e){var t;i&&(t=i[e],i=void 0!==t&&t)})),i}},{key:"bind",value:function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)}},{key:"_executeBindings",value:function(){var e=this,t=function(t){e.bindings[t].forEach((function(i){i(e.getText(t),e.lang)}))};for(var i in this.bindings)t(i)}}]),r}(N);j.moduleName="localize",j.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:{}}}};var G=function(e){a(n,e);var i=c(n);function n(e){return t(this,n),i.call(this,e)}return o(n,[{key:"initialize",value:function(){this.registerTableFunction("tableComms",this.receive.bind(this))}},{key:"getConnections",value:function(e){var t=this,i=[];return B.lookupTable(e).forEach((function(e){t.table!==e&&i.push(e)})),i}},{key:"send",value:function(e,t,i,n){var o=this,a=this.getConnections(e);a.forEach((function(e){e.tableComms(o.table.element,t,i,n)})),!a.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)}},{key:"receive",value:function(e,t,i,n){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,i,n);console.warn("Inter-table Comms Error - no such module:",t)}}]),n}(N);G.moduleName="comms";var U=Object.freeze({__proto__:null,LayoutModule:W,LocalizeModule:j,CommsModule:G}),X=function(){function i(e,n){t(this,i),this.bindStaticFuctionality(e),this.bindModules(e,U,!0),n&&this.bindModules(e,n)}return o(i,[{key:"bindStaticFuctionality",value:function(t){t.moduleBindings={},t.extendModule=function(i,n,o){if(t.moduleBindings[i]){var a=t.moduleBindings[i][n];if(a)if("object"==e(o))for(var r in o)a[r]=o[r];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",n)}else console.warn("Module Error - module does not exist:",i)},t.registerModule=function(e){Array.isArray(e)||(e=[e]),e.forEach((function(e){t.registerModuleBinding(e)}))},t.registerModuleBinding=function(e){t.moduleBindings[e.moduleName]=e},t.findTable=function(e){var t=B.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},t.prototype.bindModules=function(){var e=[],i=[];for(var n in this.modules={},t.moduleBindings){var o=t.moduleBindings[n],a=new o(this);this.modules[n]=a,o.prototype.moduleCore?this.modulesCore.push(a):o.moduleInitOrder?e.push(a):i.push(a)}e.sort((function(e,t){return e.moduleInitOrder>t.moduleInitOrder?1:-1})),this.modulesRegular=e.concat(i)}}},{key:"bindModules",value:function(e,t,i){var n=Object.values(t);i&&n.forEach((function(e){e.prototype.moduleCore=!0})),e.registerModule(n)}}]),i}(),q=function(){function i(e,n){var o=this;t(this,i),this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=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 H(this),this.dataLoader=!1,this.modules={},this.modulesCore=[],this.modulesRegular=[],this.optionsList=new k(this,"table constructor"),this.initialized=!1,this.initializeElement(e)&&(this.initializeCoreSystems(n),setTimeout((function(){o._create()}))),B.register(this)}return o(i,[{key:"initializeElement",value:function(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)}},{key:"initializeCoreSystems",value:function(e){this.columnManager=new T(this),this.rowManager=new F(this),this.footerManager=new P(this),this.dataLoader=new A(this),this.bindModules(),this.options=this.optionsList.generate(i.defaultOptions,e),this._clearObjectPointers(),this._mapDeprecatedFunctionality(),this.externalEvents=new O(this,this.options,this.options.debugEventsExternal),this.eventBus=new _(this.options.debugEventsInternal),this.interactionMonitor=new z(this),this.dataLoader.initialize(),this.footerManager.initialize()}},{key:"_mapDeprecatedFunctionality",value:function(){}},{key:"_clearSelection",value:function(){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")}},{key:"_create",value:function(){this.externalEvents.dispatch("tableBuilding"),this.eventBus.dispatch("table-building"),this._rtlCheck(),this._buildElement(),this._initializeTable(),this._loadInitialData(),this.initialized=!0,this.externalEvents.dispatch("tableBuilt")}},{key:"_rtlCheck",value:function(){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}}},{key:"_clearObjectPointers",value:function(){this.options.columns=this.options.columns.slice(0),Array.isArray(this.options.data)&&!this.options.reactiveData&&(this.options.data=this.options.data.slice(0))}},{key:"_buildElement",value:function(){var t,i=this.element,n=this.options;if("TABLE"===i.tagName){this.originalElement=this.element,t=document.createElement("div");var o=i.attributes;for(var a in o)"object"==e(o[a])&&t.setAttribute(o[a].name,o[a].value);i.parentNode.replaceChild(t,i),this.element=i=t}for(i.classList.add("tabulator"),i.setAttribute("role","grid");i.firstChild;)i.removeChild(i.firstChild);n.height&&(n.height=isNaN(n.height)?n.height:n.height+"px",i.style.height=n.height),!1!==n.minHeight&&(n.minHeight=isNaN(n.minHeight)?n.minHeight:n.minHeight+"px",i.style.minHeight=n.minHeight),!1!==n.maxHeight&&(n.maxHeight=isNaN(n.maxHeight)?n.maxHeight:n.maxHeight+"px",i.style.maxHeight=n.maxHeight)}},{key:"_initializeTable",value:function(){var e=this.element,t=this.options;this.interactionMonitor.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modulesCore.forEach((function(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((function(e){e.initialize()})),this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built")}},{key:"_loadInitialData",value:function(){this.dataLoader.load(this.options.data)}},{key:"destroy",value:function(){var e=this.element;for(B.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.rows.forEach((function(e){e.wipe()})),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[];e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")}},{key:"_detectBrowser",value:function(){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):(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))}},{key:"blockRedraw",value:function(){return this.rowManager.blockRedraw()}},{key:"restoreRedraw",value:function(){return this.rowManager.restoreRedraw()}},{key:"setData",value:function(e,t,i){if(this.initialized)return this.dataLoader.load(e,t,i,!1);console.warn("setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.")}},{key:"clearData",value:function(){this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}},{key:"getData",value:function(e){return this.rowManager.getData(e)}},{key:"getDataCount",value:function(e){return this.rowManager.getDataCount(e)}},{key:"replaceData",value:function(e,t,i){if(this.initialized)return this.dataLoader.load(e,t,i,!0,!0);console.warn("replaceData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}},{key:"updateData",value:function(e){var t=this,i=0;if(this.initialized)return new Promise((function(n,o){t.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((function(e){var o=t.rowManager.findRow(e[t.options.index]);o&&(i++,o.updateData(e).then((function(){--i||n()})))})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}));console.warn("updateData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}},{key:"addData",value:function(e,t,i){var n=this;if(this.initialized)return new Promise((function(o,a){n.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?n.rowManager.addRows(e,t,i).then((function(e){var t=[];e.forEach((function(e){t.push(e.getComponent())})),o(t)})):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))}));console.warn("addData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}},{key:"updateOrAddData",value:function(e){var t=this,i=[],n=0;if(this.initialized)return new Promise((function(o,a){t.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((function(e){var a=t.rowManager.findRow(e[t.options.index]);n++,a?a.updateData(e).then((function(){n--,i.push(a.getComponent()),n||o(i)})):t.rowManager.addRows(e).then((function(e){n--,i.push(e[0].getComponent()),n||o(i)}))})):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))}));console.warn("updateOrAddData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}},{key:"getRow",value:function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}},{key:"getRowFromPosition",value:function(e,t){var i=this.rowManager.getRowFromPosition(e,t);return i?i.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}},{key:"deleteRow",value:function(e){var t=this,i=[];Array.isArray(e)||(e=[e]);var n,o=p(e);try{for(o.s();!(n=o.n()).done;){var a=n.value,r=this.rowManager.findRow(a,!0);if(!r)return console.error("Delete Error - No matching row found:",a),Promise.reject("Delete Error - No matching row found");i.push(r)}}catch(e){o.e(e)}finally{o.f()}return i.sort((function(e,i){return t.rowManager.rows.indexOf(e)>t.rowManager.rows.indexOf(i)?1:-1})),i.forEach((function(e){e.delete()})),this.rowManager.reRenderInPosition(),Promise.resolve()}},{key:"addRow",value:function(e,t,i){if(this.initialized)return"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i).then((function(e){return e[0].getComponent()}));console.warn("addRow failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}},{key:"updateOrAddRow",value:function(e,t){var i=this.rowManager.findRow(e);return"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((function(){return i.getComponent()})):this.rowManager.addRows(t).then((function(e){return e[0].getComponent()}))}},{key:"updateRow",value:function(e,t){var i=this.rowManager.findRow(e);return"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((function(){return Promise.resolve(i.getComponent())})):(console.warn("Update Error - No matching row found:",e),Promise.reject("Update Error - No matching row found"))}},{key:"scrollToRow",value:function(e,t,i){var n=this.rowManager.findRow(e);return n?this.rowManager.scrollToRow(n,t,i):(console.warn("Scroll Error - No matching row found:",e),Promise.reject("Scroll Error - No matching row found"))}},{key:"moveRow",value:function(e,t,i){var n=this.rowManager.findRow(e);n?n.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}},{key:"getRows",value:function(e){return this.rowManager.getComponents(e)}},{key:"getRowPosition",value:function(e,t){var i=this.rowManager.findRow(e);return i?this.rowManager.getRowPosition(i,t):(console.warn("Position Error - No matching row found:",e),!1)}},{key:"setColumns",value:function(e){this.initialized?this.columnManager.setColumns(e):console.warn("setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.")}},{key:"getColumns",value:function(e){return this.columnManager.getComponents(e)}},{key:"getColumn",value:function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)}},{key:"getColumnDefinitions",value:function(){return this.columnManager.getDefinitionTree()}},{key:"showColumn",value:function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show()}},{key:"hideColumn",value:function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide()}},{key:"toggleColumn",value:function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()}},{key:"addColumn",value:function(e,t,i){var n=this.columnManager.findColumn(i);return this.columnManager.addColumn(e,t,n).then((function(e){return e.getComponent()}))}},{key:"deleteColumn",value:function(e){var t=this.columnManager.findColumn(e);return t?t.delete():(console.warn("Column Delete Error - No matching column found:",e),Promise.reject())}},{key:"updateColumnDefinition",value:function(e,t){var i=this.columnManager.findColumn(e);return i?i.updateDefinition(t):(console.warn("Column Update Error - No matching column found:",e),Promise.reject())}},{key:"moveColumn",value:function(e,t,i){var n=this.columnManager.findColumn(e),o=this.columnManager.findColumn(t);n?o?this.columnManager.moveColumn(n,o,i):console.warn("Move Error - No matching column found:",o):console.warn("Move Error - No matching column found:",e)}},{key:"scrollToColumn",value:function(e,t,i){var n=this;return new Promise((function(o,a){var r=n.columnManager.findColumn(e);return r?n.columnManager.scrollToColumn(r,t,i):(console.warn("Scroll Error - No matching column found:",e),Promise.reject("Scroll Error - No matching column found"))}))}},{key:"redraw",value:function(e){this.initialized?(this.columnManager.redraw(e),this.rowManager.redraw(e)):console.warn("redraw failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}},{key:"setHeight",value:function(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw()}},{key:"on",value:function(e,t){this.externalEvents.subscribe(e,t)}},{key:"off",value:function(e,t){this.externalEvents.unsubscribe(e,t)}},{key:"dispatchEvent",value:function(){var e,t=Array.from(arguments);t.shift();(e=this.externalEvents).dispatch.apply(e,arguments)}},{key:"modExists",value:function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)}},{key:"module",value:function(e){var t=this.modules[e];return t||console.error("Tabulator module not installed: "+e),t}}]),i}();q.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,height:!1,minHeight:!1,maxHeight:!1,columnHeaderVertAlign:"top",columns:[],columnDefaults:{},data:!1,autoColumns:!1,autoColumnsDefinitions:!1,nestedFieldSeparator:".",tooltipGenerationMode:"load",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,placeholder:!1,dataLoader:!0,dataLoaderLoading:!1,dataLoaderError:!1,dataLoaderErrorTimeout:3e3,dataSendParams:{},dataReceiveParams:{}},new X(q);var K=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).allowedTypes=["","data","download","clipboard","print","htmlOutput"],i.registerColumnOption("accessor"),i.registerColumnOption("accessorParams"),i.registerColumnOption("accessorData"),i.registerColumnOption("accessorDataParams"),i.registerColumnOption("accessorDownload"),i.registerColumnOption("accessorDownloadParams"),i.registerColumnOption("accessorClipboard"),i.registerColumnOption("accessorClipboardParams"),i.registerColumnOption("accessorPrint"),i.registerColumnOption("accessorPrintParams"),i.registerColumnOption("accessorHtmlOutput"),i.registerColumnOption("accessorHtmlOutputParams"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-retrieve",this.transformRow.bind(this))}},{key:"initializeColumn",value:function(e){var t=this,i=!1,n={};this.allowedTypes.forEach((function(o){var a,r="accessor"+(o.charAt(0).toUpperCase()+o.slice(1));e.definition[r]&&(a=t.lookupAccessor(e.definition[r]))&&(i=!0,n[r]={accessor:a,params:e.definition[r+"Params"]||{}})})),i&&(e.modules.accessor=n)}},{key:"lookupAccessor",value:function(t){var i=!1;switch(e(t)){case"string":r.accessors[t]?i=r.accessors[t]:console.warn("Accessor Error - No such accessor found, ignoring: ",t);break;case"function":i=t}return i}},{key:"transformRow",value:function(e,t){var i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),n=e.getComponent(),o=C.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var a,r,s,l;e.modules.accessor&&(r=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(a=e.getFieldValue(o))&&(l=e.getComponent(),s="function"==typeof r.params?r.params(a,o,t,l,n):r.params,e.setFieldValue(o,r.accessor(a,o,t,s,l,n)))})),o}}]),r}(N);K.moduleName="accessor",K.accessors={};function Y(t,i){var n=[];if(i=i||"",Array.isArray(t))t.forEach((function(e,t){n=n.concat(Y(e,i?i+"["+t+"]":t))}));else if("object"===e(t))for(var o in t)n=n.concat(Y(t[o],i?i+"["+o+"]":o));else n.push({key:i,value:t});return n}function J(e){var t=Y(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}function $(t,i){var n=[];if(i=i||"",Array.isArray(t))t.forEach((function(e,t){n=n.concat($(e,i?i+"["+t+"]":t))}));else if("object"===e(t))for(var o in t)n=n.concat($(t[o],i?i+"["+o+"]":o));else n.push({key:i,value:t});return n}var Q={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var n=$(i),o=new FormData;return n.forEach((function(e){o.append(e.key,e.value)})),o}}},Z=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).config={},o.url="",o.urlGenerator=!1,o.params=!1,o.loaderPromise=!1,o.registerTableOption("ajaxURL",!1),o.registerTableOption("ajaxURLGenerator",!1),o.registerTableOption("ajaxParams",{}),o.registerTableOption("ajaxConfig","get"),o.registerTableOption("ajaxContentType","form"),o.registerTableOption("ajaxRequestFunc",!1),o.registerTableOption("ajaxRequesting",(function(){})),o.registerTableOption("ajaxResponse",!1),o.contentTypeFormatters=n.contentTypeFormatters,o}return o(n,[{key:"initialize",value:function(){this.loaderPromise=this.table.options.ajaxRequestFunc||n.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||n.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))}},{key:"requestParams",value:function(e,t,i,n){var o=this.table.options.ajaxParams;return o&&("function"==typeof o&&(o=o.call(this.table)),n=Object.assign(n,o)),n}},{key:"requestDataCheck",value:function(e,t,i,n){return!((e||!this.url)&&"string"!=typeof e)}},{key:"requestData",value:function(e,t,i,n,o){var a;return!o&&this.requestDataCheck(e)?(e&&this.setUrl(e),a=this.generateConfig(i),this.sendRequest(this.url,t,a)):o}},{key:"setDefaultConfig",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config=Object.assign({},n.defaultConfig),"string"==typeof e?this.config.method=e:Object.assign(this.config,e)}},{key:"generateConfig",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign({},this.config);return"string"==typeof e?t.method=e:Object.assign(t,e),t}},{key:"setUrl",value:function(e){this.url=e}},{key:"getUrl",value:function(){return this.url}},{key:"sendRequest",value:function(e,t,i){var n=this;return!1!==this.table.options.ajaxRequesting.call(this.table,e,t)?this.loaderPromise(e,i,t).then((function(i){return n.table.options.ajaxResponse&&(i=n.table.options.ajaxResponse.call(n.table,e,t,i)),i})):Promise.reject()}}]),n}(N);Z.moduleName="ajax",Z.defaultConfig={method:"GET"},Z.defaultURLGenerator=function(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+J(i))),e},Z.defaultLoaderPromise=function(t,i,n){var o,a=this;return new Promise((function(r,s){if(t=a.urlGenerator.call(a.table,t,i,n),"GET"!=i.method.toUpperCase())if(o="object"===e(a.table.options.ajaxContentType)?a.table.options.ajaxContentType:a.contentTypeFormatters[a.table.options.ajaxContentType]){for(var l in o.headers)i.headers||(i.headers={}),void 0===i.headers[l]&&(i.headers[l]=o.headers[l]);i.body=o.body.call(a,t,i,n)}else console.warn("Ajax Error - Invalid ajaxContentType value:",a.table.options.ajaxContentType);t?(void 0===i.headers&&(i.headers={}),void 0===i.headers.Accept&&(i.headers.Accept="application/json"),void 0===i.headers["X-Requested-With"]&&(i.headers["X-Requested-With"]="XMLHttpRequest"),void 0===i.mode&&(i.mode="cors"),"cors"==i.mode?(void 0===i.headers.Origin&&(i.headers.Origin=window.location.origin),void 0===i.credentials&&(i.credentials="same-origin")):void 0===i.credentials&&(i.credentials="include"),fetch(t,i).then((function(e){e.ok?e.json().then((function(e){r(e)})).catch((function(e){s(e),console.warn("Ajax Load Error - Invalid JSON returned",e)})):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),s(e))})).catch((function(e){console.error("Ajax Load Error - Connection Error: ",e),s(e)}))):(console.warn("Ajax Load Error - No URL Set"),r([]))}))},Z.contentTypeFormatters=Q;var ee=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).mode=!0,i.pasteParser=function(){},i.pasteAction=function(){},i.customSelection=!1,i.rowRange=!1,i.blocked=!0,i.registerTableOption("clipboard",!1),i.registerTableOption("clipboardCopyStyled",!0),i.registerTableOption("clipboardCopyConfig",!1),i.registerTableOption("clipboardCopyFormatter",!1),i.registerTableOption("clipboardCopyRowRange","active"),i.registerTableOption("clipboardPasteParser","table"),i.registerTableOption("clipboardPasteAction","insert"),i.registerColumnOption("clipboard"),i.registerColumnOption("titleClipboard"),i}return o(r,[{key:"initialize",value:function(){var e=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(function(t){var i,n;if(!e.blocked){if(t.preventDefault(),e.customSelection)i=e.customSelection,e.table.options.clipboardCopyFormatter&&(i=e.table.options.clipboardCopyFormatter("plain",i));else{var o=e.table.modules.export.generateExportList(e.table.options.clipboardCopyConfig,e.table.options.clipboardCopyStyled,e.rowRange,"clipboard");i=(n=e.table.modules.export.genereateHTMLTable(o))?e.generatePlainContent(o):"",e.table.options.clipboardCopyFormatter&&(i=e.table.options.clipboardCopyFormatter("plain",i),n=e.table.options.clipboardCopyFormatter("html",n))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",i):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",i),n&&t.clipboardData.setData("text/html",n)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",i),n&&t.originalEvent.clipboardData.setData("text/html",n)),e.dispatchExternal("clipboardCopied",i,n),e.reset()}})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(function(t){e.paste(t)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction),this.registerTableFunction("copyToClipboard",this.copy.bind(this))}},{key:"reset",value:function(){this.blocked=!0,this.customSelection=!1}},{key:"generatePlainContent",value:function(t){var i=[];return t.forEach((function(t){var n=[];t.columns.forEach((function(i){var o="";if(i)if("group"===t.type&&(i.value=i.component.getKey()),null===i.value)o="";else switch(e(i.value)){case"object":o=JSON.stringify(i.value);break;case"undefined":o="";break;default:o=i.value}n.push(o)})),i.push(n.join("\t"))})),i.join("\n")}},{key:"copy",value:function(e,t){var i,n;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&&((n=document.body.createTextRange()).moveToElementText(this.table.element),n.select()),document.execCommand("copy"),i&&i.removeAllRanges())}},{key:"setPasteAction",value:function(t){switch(e(t)){case"string":this.pasteAction=r.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}}},{key:"setPasteParser",value:function(t){switch(e(t)){case"string":this.pasteParser=r.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}}},{key:"paste",value:function(e){var t,i,n;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(i=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(i=this.mutateData(i)),n=this.pasteAction.call(this,i),this.dispatchExternal("clipboardPasted",t,i,n)):this.dispatchExternal("clipboardPasteError",t))}},{key:"mutateData",value:function(e){var t=this,i=[];return Array.isArray(e)?e.forEach((function(e){i.push(t.table.modules.mutator.transformRow(e,"clipboard"))})):i=e,i}},{key:"checkPaseOrigin",value:function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t}},{key:"getPasteData",value:function(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}}]),r}(N);ee.moduleName="clipboard",ee.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)}},ee.pasteParsers={table:function(e){var t=[],i=!0,n=this.table.columnManager.columns,o=[],a=[];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=n.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=n.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)})),a.push(t)})),a)}};var te=function(){function e(i){return t(this,e),this._row=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}return o(e,[{key:"getData",value:function(e){return this._row.getData(e)}},{key:"getElement",value:function(){return this._row.getElement()}},{key:"getTable",value:function(){return this._row.table}},{key:"getCells",value:function(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}},{key:"getCell",value:function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}},{key:"_getSelf",value:function(){return this._row}}]),e}(),ie={avg:function(e,t,i){var n=0,o=void 0!==i.precision?i.precision:2;return e.length&&(n=e.reduce((function(e,t){return Number(e)+Number(t)})),n/=e.length,n=!1!==o?n.toFixed(o):n),parseFloat(n).toString()},max:function(e,t,i){var n=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))>n||null===n)&&(n=e)})),null!==n?!1!==o?n.toFixed(o):n:""},min:function(e,t,i){var n=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))"),i.dataTreeExpandElement?"string"==typeof i.dataTreeExpandElement?((t=document.createElement("div")).innerHTML=i.dataTreeExpandElement,this.expandEl=t.firstChild):this.expandEl=i.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
"),e(i.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return i.dataTreeStartExpanded};break;case"function":this.startOpen=i.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return i.dataTreeStartExpanded[t]}}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.registerDisplayHandler(this.getRows.bind(this),30)}}},{key:"initializeElementField",value:function(){var e=this.table.columnManager.getFirstVisibleColumn();this.elementField=this.table.options.dataTreeElementColumn||!!e&&e.field}},{key:"getRowChildren",value:function(e){return this.getTreeChildren(e,!0)}},{key:"columnMoving",value:function(){var e=this,t=[];return this.table.rowManager.rows.forEach((function(i){t=t.concat(e.getTreeChildren(i,!1,!0))})),t}},{key:"rowDataChanged",value:function(e,t,i){this.redrawNeeded(i)&&(this.initializeRow(e),t&&(this.layoutRow(e),this.refreshData(!0)))}},{key:"cellValueChanged",value:function(e){e.column.getField()===this.elementField&&this.layoutRow(e.row)}},{key:"initializeRow",value:function(t){var i=t.getData()[this.field],n=Array.isArray(i),o=n||!n&&"object"===e(i)&&null!==i;!o&&t.modules.dataTree&&t.modules.dataTree.branchEl&&t.modules.dataTree.branchEl.parentNode.removeChild(t.modules.dataTree.branchEl),!o&&t.modules.dataTree&&t.modules.dataTree.controlEl&&t.modules.dataTree.controlEl.parentNode.removeChild(t.modules.dataTree.controlEl),t.modules.dataTree={index:t.modules.dataTree?t.modules.dataTree.index:0,open:!!o&&(t.modules.dataTree?t.modules.dataTree.open:this.startOpen(t.getComponent(),0)),controlEl:!(!t.modules.dataTree||!o)&&t.modules.dataTree.controlEl,branchEl:!(!t.modules.dataTree||!o)&&t.modules.dataTree.branchEl,parent:!!t.modules.dataTree&&t.modules.dataTree.parent,children:o}}},{key:"reinitializeRowChildren",value:function(e){this.getTreeChildren(e,!1,!0).forEach((function(e){e.reinitialize(!0)}))}},{key:"layoutRow",value:function(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")}},{key:"generateControlElement",value:function(e,t){var i=this,n=e.modules.dataTree,o=(t=t||e.getCells()[0].getElement(),n.controlEl);!1!==n.children&&(n.open?(n.controlEl=this.collapseEl.cloneNode(!0),n.controlEl.addEventListener("click",(function(t){t.stopPropagation(),i.collapseRow(e)}))):(n.controlEl=this.expandEl.cloneNode(!0),n.controlEl.addEventListener("click",(function(t){t.stopPropagation(),i.expandRow(e)}))),n.controlEl.addEventListener("mousedown",(function(e){e.stopPropagation()})),o&&o.parentNode===t?o.parentNode.replaceChild(n.controlEl,o):t.insertBefore(n.controlEl,t.firstChild))}},{key:"setDisplayIndex",value:function(e){this.displayIndex=e}},{key:"getDisplayIndex",value:function(){return this.displayIndex}},{key:"getRows",value:function(e){var t=this,i=[];return e.forEach((function(e,n){var o;i.push(e),e instanceof L&&(e.create(),(o=e.modules.dataTree.children).index||!1===o.children||t.getChildren(e).forEach((function(e){e.create(),i.push(e)})))})),i}},{key:"getChildren",value:function(e,t){var i=this,n=e.modules.dataTree,o=[],a=[];return!1!==n.children&&(n.open||t)&&(Array.isArray(n.children)||(n.children=this.generateChildren(e)),o=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(n.children):n.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(o),o.forEach((function(e){a.push(e),i.getChildren(e).forEach((function(e){a.push(e)}))}))),a}},{key:"generateChildren",value:function(e){var t=this,i=[],n=e.getData()[this.field];return Array.isArray(n)||(n=[n]),n.forEach((function(n){var o=new L(n||{},t.table.rowManager);o.create(),o.modules.dataTree.index=e.modules.dataTree.index+1,o.modules.dataTree.parent=e,o.modules.dataTree.children&&(o.modules.dataTree.open=t.startOpen(o.getComponent(),o.modules.dataTree.index)),i.push(o)})),i}},{key:"expandRow",value:function(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))}},{key:"collapseRow",value:function(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))}},{key:"toggleRow",value:function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))}},{key:"isRowExpanded",value:function(e){return e.modules.dataTree.open}},{key:"getTreeParent",value:function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()}},{key:"getFilteredTreeChildren",value:function(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((function(e){e instanceof L&&i.push(e)}))),i}},{key:"rowDelete",value:function(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)}},{key:"addTreeChildRow",value:function(e,t,i,n){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!==n&&!1!==(o=this.findChildIndex(n,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)}},{key:"findChildIndex",value:function(t,i){var n=this,o=!1;return"object"==e(t)?t instanceof L?o=t.data:t instanceof RowComponent?o=t._getSelf().data:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&i.modules.dataTree&&(o=i.modules.dataTree.children.find((function(e){return e instanceof L&&e.element===t})))&&(o=o.data):o=null!=t&&i.data[this.field].find((function(e){return e.data[n.table.options.index]==t})),o&&(Array.isArray(i.data[this.field])&&(o=i.data[this.field].indexOf(o)),-1==o&&(o=!1)),o}},{key:"getTreeChildren",value:function(e,t,i){var n=this,o=e.modules.dataTree,a=[];return o.children&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),o.children.forEach((function(e){e instanceof L&&(a.push(t?e.getComponent():e),i&&(a=a.concat(n.getTreeChildren(e,t,i))))}))),a}},{key:"getChildField",value:function(){return this.field}},{key:"redrawNeeded",value:function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}]),r}(N);oe.moduleName="dataTree";var ae={csv:function(t,i,n){var o=i&&i.delimiter?i.delimiter:",",a=[],r=[];t.forEach((function(t){var i=[];switch(t.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":t.columns.forEach((function(e,t){e&&1===e.depth&&(r[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')}));break;case"row":t.columns.forEach((function(t){if(t){switch(e(t.value)){case"object":t.value=JSON.stringify(t.value);break;case"undefined":case"null":t.value=""}i.push('"'+String(t.value).split('"').join('""')+'"')}})),a.push(i.join(o))}})),r.length&&a.unshift(r.join(o)),a=a.join("\n"),i.bom&&(a="\ufeff"+a),n(a,"text/csv")},json:function(e,t,i){var n=[];e.forEach((function(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((function(e){e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),n.push(t)}})),i(n=JSON.stringify(n,null,"\t"),"application/json")},jsonLines:function(e,t,i){var n=[];e.forEach((function(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((function(e){e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),n.push(JSON.stringify(t))}})),i(n.join("\n"),"application/x-ndjson")},pdf:function(t,i,n){var o=[],a=[],r={},s=i.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},l=i.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},u=i.jsPDF||{},c=i&&i.title?i.title:"";function h(t,i){var n=[];return t.columns.forEach((function(t){var o;if(t){switch(e(t.value)){case"object":t.value=JSON.stringify(t.value);break;case"undefined":case"null":t.value=""}o={content:t.value,colSpan:t.width,rowSpan:t.height},i&&(o.styles=i),n.push(o)}})),n}u.orientation||(u.orientation=i.orientation||"landscape"),u.unit||(u.unit="pt"),t.forEach((function(e){switch(e.type){case"header":o.push(h(e));break;case"group":a.push(h(e,s));break;case"calc":a.push(h(e,l));break;case"row":a.push(h(e))}}));var d=new jspdf.jsPDF(u);i&&i.autoTable&&(r="function"==typeof i.autoTable?i.autoTable(d)||{}:i.autoTable),c&&(r.didDrawPage=function(e){d.text(c,40,30)}),r.head=o,r.body=a,d.autoTable(r),i&&i.documentProcessing&&i.documentProcessing(d),n(d.output("arraybuffer"),"application/pdf")},xlsx:function(t,i,n){var o=i.sheetName||"Sheet1",a=XLSX.utils.book_new(),r=new f(this);function s(){var i=[],n=[],o={},a={s:{c:0,r:0},e:{c:t[0]?t[0].columns.reduce((function(e,t){return e+(t&&t.width?t.width:1)}),0):0,r:t.length}};return t.forEach((function(t,o){var a=[];t.columns.forEach((function(t,i){t?(a.push(t.value instanceof Date||"object"!==e(t.value)?t.value:JSON.stringify(t.value)),(t.width>1||t.height>-1)&&(t.height>1||t.width>1)&&n.push({s:{r:o,c:i},e:{r:o+t.height-1,c:i+t.width-1}})):a.push("")})),i.push(a)})),XLSX.utils.sheet_add_aoa(o,i),o["!ref"]=XLSX.utils.encode_range(a),n.length&&(o["!merges"]=n),o}if(a.SheetNames=[],a.Sheets={},i.sheetOnly)n(s());else{if(i.sheets)for(var l in i.sheets)!0===i.sheets[l]?(a.SheetNames.push(l),a.Sheets[l]=s()):(a.SheetNames.push(l),r.commsSend(i.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){a.Sheets[l]=e}}));else a.SheetNames.push(o),a.Sheets[o]=s();i.documentProcessing&&(a=i.documentProcessing(a)),n(function(e){for(var t=new ArrayBuffer(e.length),i=new Uint8Array(t),n=0;n!=e.length;++n)i[n]=255&e.charCodeAt(n);return t}(XLSX.write(a,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.genereateHTMLTable(e),"text/html")}},re=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).registerTableOption("downloadReady",(function(e,t){return t})),o.registerTableOption("downloadConfig",{}),o.registerTableOption("downloadRowRange","active"),o.registerColumnOption("download"),o.registerColumnOption("titleDownload"),o}return o(n,[{key:"initialize",value:function(){this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}},{key:"downloadToTab",value:function(e,t,i,n){this.download(e,t,i,n,!0)}},{key:"download",value:function(e,t,i,o,a){var r=!1;if("function"==typeof e?r=e:n.downloaders[e]?r=n.downloaders[e]:console.warn("Download Error - No such download type found: ",e),r){var s=this.generateExportList(o);r.call(this.table,s,i||{},function(i,n){a?!0===a?this.triggerDownload(i,n,e,t,!0):a(i):this.triggerDownload(i,n,e,t)}.bind(this))}}},{key:"generateExportList",value:function(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((function(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}},{key:"triggerDownload",value:function(e,t,i,n,o){var a=document.createElement("a"),r=new Blob([e],{type:t});n=n||"Tabulator."+("function"==typeof i?"txt":i);(r=this.table.options.downloadReady(e,r))&&(o?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,n):(a.setAttribute("href",window.URL.createObjectURL(r)),a.setAttribute("download",n),a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a)),this.dispatchExternal("downloadComplete"))}},{key:"commsReceived",value:function(e,t,i){switch(t){case"intercept":this.download(i.type,"",i.options,i.active,i.intercept)}}}]),n}(N);function se(e,t){var i=t.mask,n=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",a=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*";function r(t){var s=i[t];void 0!==s&&s!==a&&s!==n&&s!==o&&(e.value=e.value+""+s,r(t+1))}e.addEventListener("keydown",(function(t){var r=e.value.length,s=t.key;if(t.keyCode>46){if(r>=i.length)return t.preventDefault(),t.stopPropagation(),!1;switch(i[r]){case n:if(s.toUpperCase()==s.toLowerCase())return t.preventDefault(),t.stopPropagation(),!1;break;case o:if(isNaN(s))return t.preventDefault(),t.stopPropagation(),!1;break;case a:break;default:if(s!==i[r])return t.preventDefault(),t.stopPropagation(),!1}}})),e.addEventListener("keyup",(function(i){i.keyCode>46&&t.maskAutoFill&&r(e.value.length)})),e.placeholder||(e.placeholder=i),t.maskAutoFill&&r(e.value.length)}re.moduleName="download",re.downloaders=ae;var le={input:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input");if(s.setAttribute("type",a.search?"search":"text"),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var l in a.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),s.setAttribute(l,s.getAttribute(l)+a.elementAttributes["+"+l])):s.setAttribute(l,a.elementAttributes[l]);function u(e){null==r&&""!==s.value||s.value!==r?n(s.value)&&(r=s.value):o()}return s.value=void 0!==r?r:"",i((function(){s.focus({preventScroll:!0}),s.style.height="100%"})),s.addEventListener("change",u),s.addEventListener("blur",u),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:u();break;case 27:o();break;case 35:case 36:e.stopPropagation()}})),a.mask&&se(s,a),s},textarea:function(t,i,n,o,a){var r=t.getValue(),s=a.verticalNavigation||"hybrid",l=String(null!=r?r:""),u=((l.match(/(?:\r\n|\r|\n)/g)||[]).length,document.createElement("textarea")),c=0;if(u.style.display="block",u.style.padding="2px",u.style.height="100%",u.style.width="100%",u.style.boxSizing="border-box",u.style.whiteSpace="pre-wrap",u.style.resize="none",a.elementAttributes&&"object"==e(a.elementAttributes))for(var h in a.elementAttributes)"+"==h.charAt(0)?(h=h.slice(1),u.setAttribute(h,u.getAttribute(h)+a.elementAttributes["+"+h])):u.setAttribute(h,a.elementAttributes[h]);function d(e){null==r&&""!==u.value||u.value!==r?(n(u.value)&&(r=u.value),setTimeout((function(){t.getRow().normalizeHeight()}),300)):o()}return u.value=l,i((function(){u.focus({preventScroll:!0}),u.style.height="100%",u.scrollHeight,u.style.height=u.scrollHeight+"px",t.getRow().normalizeHeight()})),u.addEventListener("change",d),u.addEventListener("blur",d),u.addEventListener("keyup",(function(){u.style.height="";var e=u.scrollHeight;u.style.height=e+"px",e!=c&&(c=e,t.getRow().normalizeHeight())})),u.addEventListener("keydown",(function(e){switch(e.keyCode){case 27:o();break;case 38:("editor"==s||"hybrid"==s&&u.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==s||"hybrid"==s&&u.selectionStart!==u.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),a.mask&&se(u,a),u},number:function(t,i,n,o,a){var r=t.getValue(),s=a.verticalNavigation||"editor",l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==a.max&&l.setAttribute("max",a.max),void 0!==a.min&&l.setAttribute("min",a.min),void 0!==a.step&&l.setAttribute("step",a.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var u in a.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),l.setAttribute(u,l.getAttribute(u)+a.elementAttributes["+"+u])):l.setAttribute(u,a.elementAttributes[u]);l.value=r;var c=function(e){h()};function h(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!==r?n(e)&&(r=e):o()}return i((function(){l.removeEventListener("blur",c),l.focus({preventScroll:!0}),l.style.height="100%",l.addEventListener("blur",c)})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:h();break;case 27:o();break;case 38:case 40:"editor"==s&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),a.mask&&se(l,a),l},range:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input");if(s.setAttribute("type","range"),void 0!==a.max&&s.setAttribute("max",a.max),void 0!==a.min&&s.setAttribute("min",a.min),void 0!==a.step&&s.setAttribute("step",a.step),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var l in a.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),s.setAttribute(l,s.getAttribute(l)+a.elementAttributes["+"+l])):s.setAttribute(l,a.elementAttributes[l]);function u(){var e=s.value;isNaN(e)||""===e||(e=Number(e)),e!=r?n(e)&&(r=e):o()}return s.value=r,i((function(){s.focus({preventScroll:!0}),s.style.height="100%"})),s.addEventListener("blur",(function(e){u()})),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:u();break;case 27:o()}})),s},select:function(t,i,n,o,a){var r=this,s=this,l=t.getElement(),u=t.getValue(),c=a.verticalNavigation||"editor",h=void 0!==u||null===u?Array.isArray(u)?u:[u]:void 0!==a.defaultValue?a.defaultValue:[],d=document.createElement("input"),m=document.createElement("div"),p=a.multiselect,f=[],g={},v=[],b=[],y=!0,w=!1,k="",E=null;function R(e){var i,n={},o=s.table.getData();return(i=e?s.table.columnManager.getColumnByField(e):t.getColumn()._getSelf())?o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(n[t]=!0)})):console.warn("unable to find matching column to create select lookup list:",e),Object.keys(n)}function x(i,n){var o=[],r=[];function s(e){e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return n.indexOf(e.value)>-1&&M(e),o.push(e),r.push(e),e}if("function"==typeof i&&(i=i(t)),Array.isArray(i))i.forEach((function(t){var i;"object"===e(t)?t.options?(i={label:t.label,group:!0,itemParams:t.itemParams,elementAttributes:t.elementAttributes,element:!1},r.push(i),t.options.forEach((function(e){s(e)}))):s(t):(i={label:t,value:t,element:!1},n.indexOf(i.value)>-1&&M(i),o.push(i),r.push(i))}));else for(var l in i){var u={label:i[l],value:l,element:!1};n.indexOf(u.value)>-1&&M(u),o.push(u),r.push(u)}a.sortValuesList&&(o.sort((function(e,t){return e.labelt.label?1:0})),r.sort((function(e,t){return e.labelt.label?1:0})),"asc"!==a.sortValuesList&&(o.reverse(),r.reverse())),f=o,v=r,function(){for(;m.firstChild;)m.removeChild(m.firstChild);v.forEach((function(i){var n=i.element;if(!n){if(n=document.createElement("div"),i.label=a.listItemFormatter?a.listItemFormatter(i.value,i.label,t,n,i.itemParams):i.label,i.group?(n.classList.add("tabulator-edit-select-list-group"),n.tabIndex=0,n.innerHTML=""===i.label?" ":i.label):(n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=""===i.label?" ":i.label,n.addEventListener("click",(function(){w=!0,setTimeout((function(){w=!1}),10),p?(D(i),d.focus()):S(i)})),b.indexOf(i)>-1&&n.classList.add("active")),i.elementAttributes&&"object"==e(i.elementAttributes))for(var o in i.elementAttributes)"+"==o.charAt(0)?(o=o.slice(1),n.setAttribute(o,d.getAttribute(o)+i.elementAttributes["+"+o])):n.setAttribute(o,i.elementAttributes[o]);n.addEventListener("mousedown",(function(){y=!1,setTimeout((function(){y=!0}),10)})),i.element=n}m.appendChild(n)}))}()}function T(e,t){!p&&g&&g.element&&g.element.classList.remove("active"),g&&g.element&&g.element.classList.remove("focused"),g=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active")),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function M(e){-1==b.indexOf(e)&&(b.push(e),T(e,!0)),P()}function L(e){var t=b[e];e>-1&&(b.splice(e,1),t.element&&t.element.classList.remove("active"))}function D(e){e||(e=g);var t=b.indexOf(e);t>-1?L(t):(!0!==p&&b.length>=p&&L(0),M(e)),P()}function S(e){H(),e||(e=g),e&&(d.value=e.label,n(e.value)),h=[e.value]}function F(e){e||H();var t=[];b.forEach((function(e){t.push(e.value)})),h=t,n(t)}function P(){var e=[];b.forEach((function(t){e.push(t.label)})),d.value=e.join(", "),!1===s.currentCell&&F(!0)}function z(){H(),o()}function H(){m.parentNode&&m.parentNode.removeChild(m),s.table.rowManager.element.removeEventListener("scroll",z)}if((Array.isArray(a)||!Array.isArray(a)&&"object"===e(a)&&!a.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),a={values:a}),d.setAttribute("type","text"),d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",d.style.cursor="default",d.readOnly=0!=this.currentCell,a.elementAttributes&&"object"==e(a.elementAttributes))for(var A in a.elementAttributes)"+"==A.charAt(0)?(A=A.slice(1),d.setAttribute(A,d.getAttribute(A)+a.elementAttributes["+"+A])):d.setAttribute(A,a.elementAttributes[A]);return d.value=void 0!==u||null===u?u:"",d.addEventListener("search",(function(e){d.value||(!function(){for(var e=b.length,t=0;t0&&T(f[t-1],!p));break;case 40:t=f.indexOf(g),("editor"==c||"hybrid"==c&&t=38&&e.keyCode<=90&&function(e){clearTimeout(E);var t=String.fromCharCode(event.keyCode).toLowerCase();k+=t.toLowerCase();var i=f.find((function(e){return void 0!==e.label&&e.label.toLowerCase().startsWith(k)}));i&&T(i,!p),E=setTimeout((function(){k=""}),800)}(e.keyCode)}})),d.addEventListener("blur",(function(e){y&&(p?F():z())})),d.addEventListener("focus",(function(e){w||function(){if(b=[],!m.parentNode){!0===a.values?x(R(),h):"string"==typeof a.values?x(R(a.values),h):x(a.values||[],h);var e=C.elOffset(l);m.style.minWidth=l.offsetWidth+"px",m.style.top=e.top+l.offsetHeight+"px",m.style.left=e.left+"px",m.addEventListener("mousedown",(function(e){y=!1,setTimeout((function(){y=!0}),10)})),document.body.appendChild(m)}}()})),(m=document.createElement("div")).classList.add("tabulator-edit-select-list"),i((function(){d.style.height="100%",d.focus({preventScroll:!0})})),setTimeout((function(){r.table.rowManager.element.addEventListener("scroll",z)}),10),d},autocomplete:function(t,i,n,o,a){var r=this,s=this,l=t.getElement(),u=t.getValue(),c=a.verticalNavigation||"editor",h=void 0!==u||null===u?u:void 0!==a.defaultValue?a.defaultValue:"",d=document.createElement("input"),m=document.createElement("div"),p=[],f=!1,g=!0,v=!1;if(d.setAttribute("type","search"),d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var b in a.elementAttributes)"+"==b.charAt(0)?(b=b.slice(1),d.setAttribute(b,d.getAttribute(b)+a.elementAttributes["+"+b])):d.setAttribute(b,a.elementAttributes[b]);function y(){!0===a.values?v=w():"string"==typeof a.values&&(v=w(a.values))}function w(e){var i,n={},o=s.table.getData();return(i=e?s.table.columnManager.getColumnByField(e):t.getColumn()._getSelf())?(o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(n[t]=!0)})),n=a.sortValuesList?"asc"==a.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create autocomplete lookup list:",e),n}function k(e,t){var i,n,o=[];i=v||(a.values||[]),a.searchFunc?(o=a.searchFunc(e,i))instanceof Promise?(E(void 0!==a.searchingPlaceholder?a.searchingPlaceholder:"Searching..."),o.then((function(e){T(R(e),t)})).catch((function(e){console.err("error in autocomplete search promise:",e)}))):T(R(o),t):(n=R(i),""===e?a.showListOnEmpty&&(o=n):n.forEach((function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&o.push(t)})),T(o,t))}function E(e){var t=document.createElement("div");x(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,m.appendChild(t))}function R(t){var i=[];if(Array.isArray(t))t.forEach((function(t){var n={};"object"===e(t)?(n.title=a.listItemFormatter?a.listItemFormatter(t.value,t.label):t.label,n.value=t.value):(n.title=a.listItemFormatter?a.listItemFormatter(t,t):t,n.value=t),i.push(n)}));else for(var n in t){var o={title:a.listItemFormatter?a.listItemFormatter(n,t[n]):t[n],value:n};i.push(o)}return i}function x(){for(;m.firstChild;)m.removeChild(m.firstChild)}function T(e,t){e.length?function(e,t){var i=!1;x(),(p=e).forEach((function(e){var n=e.element;n||((n=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=e.title,n.addEventListener("click",(function(t){L(e),M()})),n.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),e.element=n,t&&e.value==u&&(d.value=e.title,e.element.classList.add("active"),i=!0),e===f&&(e.element.classList.add("active"),i=!0)),m.appendChild(n)})),i||L(!1)}(e,t):a.emptyPlaceholder&&E(a.emptyPlaceholder)}function M(){D(),f?u!==f.value?(u=f.value,d.value=f.title,n(f.value)):o():a.freetext||a.allowEmpty&&""===d.value?(u=d.value,n(d.value)):o()}function L(e,t){f&&f.element&&f.element.classList.remove("active"),f=e,e&&e.element&&e.element.classList.add("active"),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function D(){m.parentNode&&m.parentNode.removeChild(m),s.table.rowManager.element.removeEventListener("scroll",S)}function S(){D(),o()}return m.classList.add("tabulator-edit-select-list"),m.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),d.addEventListener("keydown",(function(e){var t;switch(e.keyCode){case 38:t=p.indexOf(f),("editor"==c||"hybrid"==c&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),L(t>0&&p[t-1]));break;case 40:t=p.indexOf(f),("editor"==c||"hybrid"==c&&t'):("ie"==r.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')}))}function f(e){var t=document.createElement("span"),i=m.cloneNode(!0);h.push(i),t.addEventListener("mouseenter",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),p(e)})),t.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),t.addEventListener("click",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),n(e),s.blur()})),t.appendChild(i),d.appendChild(t)}function g(e){l=e,p(e)}if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",d.style.verticalAlign="middle",d.style.display="inline-block",d.style.padding="4px",m.setAttribute("width",c),m.setAttribute("height",c),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",a.elementAttributes&&"object"==e(a.elementAttributes))for(var v in a.elementAttributes)"+"==v.charAt(0)?(v=v.slice(1),d.setAttribute(v,d.getAttribute(v)+a.elementAttributes["+"+v])):d.setAttribute(v,a.elementAttributes[v]);for(var b=1;b<=u;b++)f(b);return p(l=Math.min(parseInt(l),u)),d.addEventListener("mousemove",(function(e){p(0)})),d.addEventListener("click",(function(e){n(0)})),s.addEventListener("blur",(function(e){o()})),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:g(l+1);break;case 37:g(l-1);break;case 13:n(l);break;case 27:o()}})),d},progress:function(t,i,n,o,a){var r,s,l=t.getElement(),u=void 0===a.max?l.getElementsByTagName("div")[0]&&l.getElementsByTagName("div")[0].getAttribute("max")||100:a.max,c=void 0===a.min?l.getElementsByTagName("div")[0]&&l.getElementsByTagName("div")[0].getAttribute("min")||0:a.min,h=(u-c)/100,d=t.getValue()||0,m=document.createElement("div"),p=document.createElement("div");function f(){var e=window.getComputedStyle(l,null),t=h*Math.round(p.offsetWidth/((l.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+c;n(t),l.setAttribute("aria-valuenow",t),l.setAttribute("aria-label",d)}if(m.style.position="absolute",m.style.right="0",m.style.top="0",m.style.bottom="0",m.style.width="5px",m.classList.add("tabulator-progress-handle"),p.style.display="inline-block",p.style.position="relative",p.style.height="100%",p.style.backgroundColor="#488CE9",p.style.maxWidth="100%",p.style.minWidth="0%",a.elementAttributes&&"object"==e(a.elementAttributes))for(var g in a.elementAttributes)"+"==g.charAt(0)?(g=g.slice(1),p.setAttribute(g,p.getAttribute(g)+a.elementAttributes["+"+g])):p.setAttribute(g,a.elementAttributes[g]);return l.style.padding="4px 4px",d=Math.min(parseFloat(d),u),d=Math.max(parseFloat(d),c),d=Math.round((d-c)/h),p.style.width=d+"%",l.setAttribute("aria-valuemin",c),l.setAttribute("aria-valuemax",u),p.appendChild(m),m.addEventListener("mousedown",(function(e){r=e.screenX,s=p.offsetWidth})),m.addEventListener("mouseover",(function(){m.style.cursor="ew-resize"})),l.addEventListener("mousemove",(function(e){r&&(p.style.width=s+e.screenX-r+"px")})),l.addEventListener("mouseup",(function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,s=!1,f())})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),p.style.width=p.clientWidth+l.clientWidth/100+"px";break;case 37:e.preventDefault(),p.style.width=p.clientWidth-l.clientWidth/100+"px";break;case 9:case 13:f();break;case 27:o()}})),l.addEventListener("blur",(function(){o()})),p},tickCross:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input"),l=a.tristate,u=void 0===a.indeterminateValue?null:a.indeterminateValue,c=!1;if(s.setAttribute("type","checkbox"),s.style.marginTop="5px",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var h in a.elementAttributes)"+"==h.charAt(0)?(h=h.slice(1),s.setAttribute(h,s.getAttribute(h)+a.elementAttributes["+"+h])):s.setAttribute(h,a.elementAttributes[h]);function d(e){return l?e?c?u:s.checked:s.checked&&!c?(s.checked=!1,s.indeterminate=!0,c=!0,u):(c=!1,s.checked):s.checked}return s.value=r,!l||void 0!==r&&r!==u&&""!==r||(c=!0,s.indeterminate=!0),"firefox"!=this.table.browser&&i((function(){s.focus({preventScroll:!0})})),s.checked=!0===r||"true"===r||"True"===r||1===r,i((function(){s.focus()})),s.addEventListener("change",(function(e){n(d())})),s.addEventListener("blur",(function(e){n(d(!0))})),s.addEventListener("keydown",(function(e){13==e.keyCode&&n(d()),27==e.keyCode&&o()})),s}},ue=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).currentCell=!1,i.mouseClick=!1,i.recursionBlock=!1,i.invalidEdit=!1,i.editedCells=[],i.editors=r.editors,i.registerColumnOption("editable"),i.registerColumnOption("editor"),i.registerColumnOption("editorParams"),i.registerColumnOption("cellEditing"),i.registerColumnOption("cellEdited"),i.registerColumnOption("cellEditCancelled"),i.registerTableFunction("getEditedCells",i.getEditedCells.bind(l(i))),i.registerTableFunction("clearCellEdited",i.clearCellEdited.bind(l(i))),i.registerTableFunction("navigatePrev",i.navigatePrev.bind(l(i))),i.registerTableFunction("navigateNext",i.navigateNext.bind(l(i))),i.registerTableFunction("navigateLeft",i.navigateLeft.bind(l(i))),i.registerTableFunction("navigateRight",i.navigateRight.bind(l(i))),i.registerTableFunction("navigateUp",i.navigateUp.bind(l(i))),i.registerTableFunction("navigateDown",i.navigateDown.bind(l(i))),i.registerComponentFunction("cell","isEdited",i.cellisEdited.bind(l(i))),i.registerComponentFunction("cell","clearEdited",i.clearEdited.bind(l(i))),i.registerComponentFunction("cell","edit",i.editCell.bind(l(i))),i.registerComponentFunction("cell","cancelEdit",i.cellCancelEdit.bind(l(i))),i.registerComponentFunction("cell","navigatePrev",i.navigatePrev.bind(l(i))),i.registerComponentFunction("cell","navigateNext",i.navigateNext.bind(l(i))),i.registerComponentFunction("cell","navigateLeft",i.navigateLeft.bind(l(i))),i.registerComponentFunction("cell","navigateRight",i.navigateRight.bind(l(i))),i.registerComponentFunction("cell","navigateUp",i.navigateUp.bind(l(i))),i.registerComponentFunction("cell","navigateDown",i.navigateDown.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-init",this.bindEditor.bind(this)),this.subscribe("cell-delete",this.clearEdited.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("data-refreshing",this.cancelEdit.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-left",this.navigateLeft.bind(this,void 0)),this.subscribe("keybinding-nav-right",this.navigateRight.bind(this,void 0)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this,void 0)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this,void 0))}},{key:"keybindingNavigateNext",value:function(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(t,e)||i&&(t.getElement().firstChild.blur(),(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(t.row.getComponent())):this.table.addRow(Object.assign({},i))).then((function(){setTimeout((function(){t.getComponent().navigateNext()}))}))))}},{key:"cellisEdited",value:function(e){return!!e.modules.edit&&e.modules.edit.edited}},{key:"cellCancelEdit",value:function(e){e===this.currentCell?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},{key:"clearCellEdited",value:function(e){var t=this;e||(e=this.table.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach((function(e){t.table.modules.edit.clearEdited(e._getSelf())}))}},{key:"navigatePrev",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;if(i){if(n&&n.preventDefault(),e=this.navigateLeft())return!0;if((t=this.table.rowManager.prevDisplayRow(i.row,!0))&&(e=this.findNextEditableCell(t,t.cells.length)))return e.getComponent().edit(),!0}return!1}},{key:"navigateNext",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;if(i){if(n&&n.preventDefault(),e=this.navigateRight())return!0;if((t=this.table.rowManager.nextDisplayRow(i.row,!0))&&(e=this.findNextEditableCell(t,-1)))return e.getComponent().edit(),!0}return!1}},{key:"navigateLeft",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;return!!(i&&(n&&n.preventDefault(),e=i.getIndex(),t=this.findPrevEditableCell(i.row,e)))&&(t.getComponent().edit(),!0)}},{key:"navigateRight",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;return!!(i&&(n&&n.preventDefault(),e=i.getIndex(),t=this.findNextEditableCell(i.row,e)))&&(t.getComponent().edit(),!0)}},{key:"navigateUp",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;return!!(i&&(n&&n.preventDefault(),e=i.getIndex(),t=this.table.rowManager.prevDisplayRow(i.row,!0)))&&(t.cells[e].getComponent().edit(),!0)}},{key:"navigateDown",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;return!!(i&&(n&&n.preventDefault(),e=i.getIndex(),t=this.table.rowManager.nextDisplayRow(i.row,!0)))&&(t.cells[e].getComponent().edit(),!0)}},{key:"findNextEditableCell",value:function(e,t){var i=!1;if(t0)for(var n=t-1;n>=0;n--){var o=e.cells[n],a=!0;if(o.column.modules.edit&&C.elVisible(o.getElement())&&("function"==typeof o.column.modules.edit.check&&(a=o.column.modules.edit.check(o.getComponent())),a)){i=o;break}}return i}},{key:"initializeColumnCheck",value:function(e){void 0!==e.definition.editor&&this.initializeColumn(e)}},{key:"columnDeleteCheck",value:function(e){this.currentCell&&this.currentCell.column===e&&this.cancelEdit()}},{key:"rowDeleteCheck",value:function(e){this.currentCell&&this.currentCell.row===e&&this.cancelEdit()}},{key:"initializeColumn",value:function(t){var i={editor:!1,blocked:!1,check:t.definition.editable,params:t.definition.editorParams||{}};switch(e(t.definition.editor)){case"string":this.editors[t.definition.editor]?i.editor=this.editors[t.definition.editor]:console.warn("Editor Error - No such editor found: ",t.definition.editor);break;case"function":i.editor=t.definition.editor;break;case"boolean":!0===t.definition.editor&&("function"!=typeof t.definition.formatter?this.editors[t.definition.formatter]?i.editor=this.editors[t.definition.formatter]:i.editor=this.editors.input:console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",t.definition.formatter))}i.editor&&(t.modules.edit=i)}},{key:"getCurrentCell",value:function(){return!!this.currentCell&&this.currentCell.getComponent()}},{key:"clearEditor",value:function(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),e?i.column.modules.validate&&this.table.modExists("validate")&&this.table.modules.validate.cellValidate(i):t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-row-editing")}}},{key:"cancelEdit",value:function(){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)}}},{key:"bindEditor",value:function(e){if(e.column.modules.edit){var t=this,i=e.getElement(!0);i.setAttribute("tabindex",0),i.addEventListener("click",(function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})})),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),i.addEventListener("focus",(function(i){t.recursionBlock||t.edit(e,i,!1)}))}}},{key:"focusCellNoEvent",value:function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1}},{key:"editCell",value:function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)}},{key:"focusScrollAdjust",value:function(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,n=e.row.getElement();n.offsetTop;n.offsetTopi&&(this.table.rowManager.element.scrollTop+=n.offsetTop+n.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,a=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();r.offsetLeft;this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin),a-=parseInt(this.table.modules.frozenColumns.rightMargin)),"virtual"===this.table.options.renderHorizontal&&(o-=parseInt(this.table.columnManager.renderer.vDomPadLeft),a-=parseInt(this.table.columnManager.renderer.vDomPadLeft)),r.offsetLefta&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-a)}}},{key:"edit",value:function(t,i,n){var o,a,r,s=this,l=!0,u=function(){},c=t.getElement();if(!this.currentCell){if(t.column.modules.edit.blocked)return this.mouseClick=!1,c.blur(),!1;switch(i&&i.stopPropagation(),e(t.column.modules.edit.check)){case"function":l=t.column.modules.edit.check(t.getComponent());break;case"boolean":l=t.column.modules.edit.check}if(l||n){if(s.cancelEdit(),s.currentCell=t,this.focusScrollAdjust(t),a=t.getComponent(),this.mouseClick&&(this.mouseClick=!1,t.column.definition.cellClick&&t.column.definition.cellClick.call(this.table,i,a)),t.column.definition.cellEditing&&t.column.definition.cellEditing.call(this.table,a),this.dispatchExternal("cellEditing",a),r="function"==typeof t.column.modules.edit.params?t.column.modules.edit.params(a):t.column.modules.edit.params,!1===(o=t.column.modules.edit.editor.call(s,a,(function(e){u=e}),(function(e){if(s.currentCell===t){var i=!0;return t.column.modules.validate&&s.table.modExists("validate")&&"manual"!=s.table.options.validationMode&&(i=s.table.modules.validate.validate(t.column.modules.validate,t,e)),!0===i||"highlight"===s.table.options.validationMode?(s.clearEditor(),t.modules.edit||(t.modules.edit={}),t.modules.edit.edited=!0,-1==s.editedCells.indexOf(t)&&s.editedCells.push(t),t.setValue(e,!0),!0===i||(c.classList.add("tabulator-validation-fail"),s.table.externalEvents.dispatch("validationFailed",t.getComponent(),e,i),!1)):(s.invalidEdit=!0,c.classList.add("tabulator-validation-fail"),s.focusCellNoEvent(t,!0),u(),s.table.externalEvents.dispatch("validationFailed",t.getComponent(),e,i),!1)}}),(function(){s.currentCell===t&&s.cancelEdit()}),r)))return c.blur(),!1;if(!(o instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",o),c.blur(),!1;for(c.classList.add("tabulator-editing"),t.row.getElement().classList.add("tabulator-row-editing");c.firstChild;)c.removeChild(c.firstChild);c.appendChild(o),u();for(var h=c.children,d=0;d-1&&this.editedCells.splice(t,1)}}]),r}(N);ue.moduleName="edit",ue.editors=le;var ce=function e(i,n,o,a){t(this,e),this.type=i,this.columns=n,this.component=o||!1,this.indent=a||0},he=function e(i,n,o,a,r){t(this,e),this.value=i,this.component=n||!1,this.width=o,this.height=a,this.depth=r},de=function(n){a(s,n);var r=c(s);function s(e){var i;return t(this,s),(i=r.call(this,e)).config={},i.cloneTableStyle=!0,i.colVisProp="",i.registerTableOption("htmlOutputConfig",!1),i.registerColumnOption("htmlOutput"),i.registerColumnOption("titleHtmlOutput"),i}return o(s,[{key:"initialize",value:function(){this.registerTableFunction("getHtml",this.getHtml.bind(this))}},{key:"generateExportList",value:function(e,t,i,n){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=n;var o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],a=this.bodyToExportRows(this.rowLookup(i));return o.concat(a)}},{key:"genereateTable",value:function(e,t,i,n){var o=this.generateExportList(e,t,i,n);return this.genereateTableElement(o)}},{key:"rowLookup",value:function(e){var t=this,i=[];if("function"==typeof e)e.call(this.table).forEach((function(e){(e=t.table.rowManager.findRow(e))&&i.push(e)}));else switch(e){case!0:case"visible":i=this.table.rowManager.getVisibleRows(!1,!0);break;case"all":i=this.table.rowManager.rows;break;case"selected":i=this.table.modules.selectRow.selectedRows;break;case"active":default:i=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],i)}},{key:"generateColumnGroupHeaders",value:function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((function(i){var n=e.processColumnGroup(i);n&&t.push(n)})),t}},{key:"processColumnGroup",value:function(e){var t=this,i=e.columns,n=0,o={title:e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,column:e,depth:1};if(i.length){if(o.subGroups=[],o.width=0,i.forEach((function(e){var i=t.processColumnGroup(e);i&&(o.width+=i.width,o.subGroups.push(i),i.depth>n&&(n=i.depth))})),o.depth+=n,!o.width)return!1}else{if(!this.columnVisCheck(e))return!1;o.width=1}return o}},{key:"columnVisCheck",value:function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])}},{key:"headersToExportRows",value:function(e){var t=[],i=0,n=[];function o(e,n){var a=i-n;if(void 0===t[n]&&(t[n]=[]),e.height=e.subGroups?1:a-e.depth+1,t[n].push(e),e.height>1)for(var r=1;r1)for(var s=1;si&&(i=e.depth)})),e.forEach((function(e){o(e,0)})),t.forEach((function(e){var t=[];e.forEach((function(e){if(e){var i=void 0===e.title?"":e.title;t.push(new he(i,e.column.getComponent(),e.width,e.height,e.depth))}else t.push(null)})),n.push(new ce("header",t))})),n}},{key:"bodyToExportRows",value:function(e){var t=this,i=[],n=[];return this.table.columnManager.columnsByIndex.forEach((function(e){t.columnVisCheck(e)&&i.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((function(e){switch(e.type){case"group":return!1!==t.config.rowGroups;case"calc":return!1!==t.config.columnCalcs;case"row":return!(t.table.options.dataTree&&!1===t.config.dataTree&&e.modules.dataTree.parent)}return!0}))).forEach((function(e,o){var a=e.getData(t.colVisProp),r=[],s=0;switch(e.type){case"group":s=e.level,r.push(new he(e.key,e.getComponent(),i.length,1));break;case"calc":case"row":i.forEach((function(e){r.push(new he(e._column.getFieldValue(a),e,1,1))})),t.table.options.dataTree&&!1!==t.config.dataTree&&(s=e.modules.dataTree.index)}n.push(new ce(e.type,r,e.getComponent(),s))})),n}},{key:"genereateTableElement",value:function(e){var t=this,i=document.createElement("table"),n=document.createElement("thead"),o=document.createElement("tbody"),a=this.lookupTableStyles(),r=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],s={};return s.rowFormatter=null!==r?r:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(s.treeElementField=this.table.modules.dataTree.elementField),s.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],s.groupHeader&&!Array.isArray(s.groupHeader)&&(s.groupHeader=[s.groupHeader]),i.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),n,["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((function(e,i){switch(e.type){case"header":n.appendChild(t.genereateHeaderElement(e,s,a));break;case"group":o.appendChild(t.genereateGroupElement(e,s,a));break;case"calc":o.appendChild(t.genereateCalcElement(e,s,a));break;case"row":var r=t.genereateRowElement(e,s,a);t.mapElementStyles(i%2&&a.evenRow?a.evenRow:a.oddRow,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),o.appendChild(r)}})),n.innerHTML&&i.appendChild(n),i.appendChild(o),this.mapElementStyles(this.table.element,i,["border-top","border-left","border-right","border-bottom"]),i}},{key:"lookupTableStyles",value:function(){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}},{key:"genereateHeaderElement",value:function(e,t,i){var n=this,o=document.createElement("tr");return e.columns.forEach((function(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,n.cloneTableStyle&&(t.style.boxSizing="border-box"),i.forEach((function(e){t.classList.add(e)})),n.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?n.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&n.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),o.appendChild(t)}})),o}},{key:"genereateGroupElement",value:function(e,t,i){var n=document.createElement("tr"),o=document.createElement("td"),a=e.columns[0];return n.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?a.value=t.groupHeader[e.indent](a.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1===t.groupHeader?a.value=a.value:a.value=e.component._group.generator(a.value,e.component._group.getRowCount(),e.component._group.getData(),e.component),o.colSpan=a.width,o.innerHTML=a.value,n.classList.add("tabulator-print-table-group"),n.classList.add("tabulator-group-level-"+e.indent),a.component.isVisible()&&n.classList.add("tabulator-group-visible"),this.mapElementStyles(i.firstGroup,n,["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"]),n.appendChild(o),n}},{key:"genereateCalcElement",value:function(e,t,i){var n=this.genereateRowElement(e,t,i);return n.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(i.calcRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n}},{key:"genereateRowElement",value:function(t,n,o){var a=this,r=document.createElement("tr");return r.classList.add("tabulator-print-table-row"),t.columns.forEach((function(s){if(s){var l=document.createElement("td"),u=s.component._column,c=a.table.columnManager.findColumnIndex(u),h=s.value,d={modules:{},getValue:function(){return h},getField:function(){return u.definition.field},getElement:function(){return l},getColumn:function(){return u.getComponent()},getData:function(){return t.component.getData()},getRow:function(){return t.component},getComponent:function(){return d},column:u};if((u.definition.cssClass?u.definition.cssClass.split(" "):[]).forEach((function(e){l.classList.add(e)})),a.table.modExists("format")&&!1!==a.config.formatCells)h=a.table.modules.format.formatExportValue(d,a.colVisProp);else switch(e(h)){case"object":h=JSON.stringify(h);break;case"undefined":case"null":h="";break;default:h=h}h instanceof Node?l.appendChild(h):l.innerHTML=h,(o.styleCells[c]||o.firstCell)&&(a.mapElementStyles(o.styleCells[c]||o.firstCell,l,["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"]),u.definition.align&&(l.style.textAlign=u.definition.align)),a.table.options.dataTree&&!1!==a.config.dataTree&&(n.treeElementField&&n.treeElementField==u.field||!n.treeElementField&&0==i)&&(t.component._row.modules.dataTree.controlEl&&l.insertBefore(t.component._row.modules.dataTree.controlEl.cloneNode(!0),l.firstChild),t.component._row.modules.dataTree.branchEl&&l.insertBefore(t.component._row.modules.dataTree.branchEl.cloneNode(!0),l.firstChild)),r.appendChild(l),d.modules.format&&d.modules.format.renderedCallback&&d.modules.format.renderedCallback(),n.rowFormatter&&!1!==a.config.formatCells&&n.rowFormatter(t.component)}})),r}},{key:"genereateHTMLTable",value:function(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML}},{key:"getHtml",value:function(e,t,i,n){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,n||"htmlOutput");return this.genereateHTMLTable(o)}},{key:"mapElementStyles",value:function(e,t,i){if(this.cloneTableStyle&&e&&t){var n={"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[n[e]]=o.getPropertyValue(e)}))}}}}]),s}(N);de.moduleName="export";var me={"=":function(e,t,i,n){return t==e},"<":function(e,t,i,n){return t":function(e,t,i,n){return t>e},">=":function(e,t,i,n){return t>=e},"!=":function(e,t,i,n){return t!=e},regex:function(e,t,i,n){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,i,n){var o=e.toLowerCase().split(void 0===n.separator?" ":n.separator),a=String(null==t?"":t).toLowerCase(),r=[];return o.forEach((function(e){a.includes(e)&&r.push(!0)})),n.matchAll?r.length===o.length:!!r.length},starts:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,i,n){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},pe=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).filterList=[],i.headerFilters={},i.headerFilterColumns=[],i.prevHeaderFilterChangeCheck="",i.prevHeaderFilterChangeCheck="{}",i.changed=!1,i.tableInitialized=!1,i.registerTableOption("filterMode","local"),i.registerTableOption("initialFilter",!1),i.registerTableOption("initialHeaderFilter",!1),i.registerTableOption("headerFilterLiveFilterDelay",300),i.registerColumnOption("headerFilter"),i.registerColumnOption("headerFilterPlaceholder"),i.registerColumnOption("headerFilterParams"),i.registerColumnOption("headerFilterEmptyCheck"),i.registerColumnOption("headerFilterFunc"),i.registerColumnOption("headerFilterFuncParams"),i.registerColumnOption("headerFilterLiveFilter"),i.registerTableFunction("searchRows",i.searchRows.bind(l(i))),i.registerTableFunction("searchData",i.searchData.bind(l(i))),i.registerTableFunction("setFilter",i.userSetFilter.bind(l(i))),i.registerTableFunction("refreshFilter",i.userRefreshFilter.bind(l(i))),i.registerTableFunction("addFilter",i.userAddFilter.bind(l(i))),i.registerTableFunction("getFilters",i.getFilters.bind(l(i))),i.registerTableFunction("setHeaderFilterFocus",i.userSetHeaderFilterFocus.bind(l(i))),i.registerTableFunction("getHeaderFilterValue",i.userGetHeaderFilterValue.bind(l(i))),i.registerTableFunction("setHeaderFilterValue",i.userSetHeaderFilterValue.bind(l(i))),i.registerTableFunction("getHeaderFilters",i.getHeaderFilters.bind(l(i))),i.registerTableFunction("removeFilter",i.userRemoveFilter.bind(l(i))),i.registerTableFunction("clearFilter",i.userClearFilter.bind(l(i))),i.registerTableFunction("clearHeaderFilter",i.userClearHeaderFilter.bind(l(i))),i.registerComponentFunction("column","headerFilterFocus",i.setHeaderFilterFocus.bind(l(i))),i.registerComponentFunction("column","reloadHeaderFilter",i.reloadHeaderFilter.bind(l(i))),i.registerComponentFunction("column","getHeaderFilterValue",i.getHeaderFilterValue.bind(l(i))),i.registerComponentFunction("column","setHeaderFilterValue",i.setHeaderFilterValue.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){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)),"remote"===this.table.options.filterMode&&this.subscribe("data-params",this.remoteFilterParams.bind(this)),this.registerDataHandler(this.filter.bind(this),10)}},{key:"tableBuilt",value:function(){var e=this;this.table.options.initialFilter&&this.setFilter(this.table.options.initialFilter),this.table.options.initialHeaderFilter&&this.table.options.initialHeaderFilter.forEach((function(t){var i=e.table.columnManager.findColumn(t.field);if(!i)return console.warn("Column Filter Error - No matching column found:",t.field),!1;e.setHeaderFilterValue(i,t.value)})),this.tableInitialized=!0}},{key:"remoteFilterParams",value:function(e,t,i,n){return n.filter=this.getFilters(!0,!0),n}},{key:"userSetFilter",value:function(e,t,i,n){this.setFilter(e,t,i,n),this.refreshFilter()}},{key:"userRefreshFilter",value:function(){this.refreshFilter()}},{key:"userAddFilter",value:function(e,t,i,n){this.addFilter(e,t,i,n),this.refreshFilter()}},{key:"userSetHeaderFilterFocus",value:function(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)}},{key:"userGetHeaderFilterValue",value:function(e){var t=this.table.columnManager.findColumn(e);if(t)return this.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}},{key:"userSetHeaderFilterValue",value:function(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)}},{key:"userRemoveFilter",value:function(e,t,i){this.removeFilter(e,t,i),this.refreshFilter()}},{key:"userClearFilter",value:function(e){this.clearFilter(e),this.refreshFilter()}},{key:"userClearHeaderFilter",value:function(){this.clearHeaderFilter(),this.refreshFilter()}},{key:"searchRows",value:function(e,t,i){return this.search("rows",e,t,i)}},{key:"searchData",value:function(e,t,i){return this.search("data",e,t,i)}},{key:"initializeColumnHeaderFilter",value:function(e){var t=e.definition;t.headerFilter&&(void 0!==t.headerFilterPlaceholder&&t.field&&this.module("localize").setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),this.initializeColumn(e))}},{key:"initializeColumn",value:function(t,i){var n=this,o=t.getField();t.modules.filter={success:function(i){var a,s="input"==t.modules.filter.tagType&&"text"==t.modules.filter.attrType||"textarea"==t.modules.filter.tagType?"partial":"match",l="",u="";if(void 0===t.modules.filter.prevSuccess||t.modules.filter.prevSuccess!==i){if(t.modules.filter.prevSuccess=i,t.modules.filter.emptyFunc(i))delete n.headerFilters[o];else{switch(t.modules.filter.value=i,e(t.definition.headerFilterFunc)){case"string":r.filters[t.definition.headerFilterFunc]?(l=t.definition.headerFilterFunc,a=function(e){var n=t.definition.headerFilterFuncParams||{},o=t.getFieldValue(e);return n="function"==typeof n?n(i,o,e):n,r.filters[t.definition.headerFilterFunc](i,o,e,n)}):console.warn("Header Filter Error - Matching filter function not found: ",t.definition.headerFilterFunc);break;case"function":l=a=function(e){var n=t.definition.headerFilterFuncParams||{},o=t.getFieldValue(e);return n="function"==typeof n?n(i,o,e):n,t.definition.headerFilterFunc(i,o,e,n)}}if(!a)switch(s){case"partial":a=function(e){var n=t.getFieldValue(e);return null!=n&&String(n).toLowerCase().indexOf(String(i).toLowerCase())>-1},l="like";break;default:a=function(e){return t.getFieldValue(e)==i},l="="}n.headerFilters[o]={value:i,func:a,type:l,params:{}}}u=JSON.stringify(n.headerFilters),n.prevHeaderFilterChangeCheck!==u&&(n.prevHeaderFilterChangeCheck=u,n.trackChanges(),n.refreshFilter())}return!0},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(t)}},{key:"generateHeaderFilterElement",value:function(t,i,n){var o,a,r,s,l,u,c,h=this,d=this,m=t.modules.filter.success,p=t.getField();if(t.modules.filter.headerElement&&t.modules.filter.headerElement.parentNode&&t.contentElement.removeChild(t.modules.filter.headerElement.parentNode),p){switch(t.modules.filter.emptyFunc=t.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e&&0!==e},(o=document.createElement("div")).classList.add("tabulator-header-filter"),e(t.definition.headerFilter)){case"string":d.table.modules.edit.editors[t.definition.headerFilter]?(a=d.table.modules.edit.editors[t.definition.headerFilter],"tick"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",t.definition.editor);break;case"function":a=t.definition.headerFilter;break;case"boolean":t.modules.edit&&t.modules.edit.editor?a=t.modules.edit.editor:t.definition.formatter&&d.table.modules.edit.editors[t.definition.formatter]?(a=d.table.modules.edit.editors[t.definition.formatter],"tick"!==t.definition.formatter&&"tickCross"!==t.definition.formatter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):a=d.table.modules.edit.editors.input}if(a){if(s={getValue:function(){return void 0!==i?i:""},getField:function(){return t.definition.field},getElement:function(){return o},getColumn:function(){return t.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},c="function"==typeof(c=t.definition.headerFilterParams||{})?c.call(d.table,s):c,!(r=a.call(this.table.modules.edit,s,(function(){}),m,(function(){}),c)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",r);p?d.langBind("headerFilters|columns|"+t.definition.field,(function(e){r.setAttribute("placeholder",void 0!==e&&e?e:d.langText("headerFilters|default"))})):d.langBind("headerFilters|default",(function(e){r.setAttribute("placeholder",e)})),r.addEventListener("click",(function(e){e.stopPropagation(),r.focus()})),r.addEventListener("focus",(function(e){var t=h.table.columnManager.element.scrollLeft;t!==h.table.rowManager.element.scrollLeft+parseInt(h.table.columnManager.element.style.marginLeft)&&(h.table.rowManager.scrollHorizontal(t),h.table.columnManager.scrollHorizontal(t))})),l=!1,u=function(e){l&&clearTimeout(l),l=setTimeout((function(){m(r.value)}),d.table.options.headerFilterLiveFilterDelay)},t.modules.filter.headerElement=r,t.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",t.modules.filter.tagType=r.tagName.toLowerCase(),!1!==t.definition.headerFilterLiveFilter&&("autocomplete"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter&&("autocomplete"!==t.definition.editor&&"tickCross"!==t.definition.editor||!0!==t.definition.headerFilter)&&(r.addEventListener("keyup",u),r.addEventListener("search",u),"number"==t.modules.filter.attrType&&r.addEventListener("change",(function(e){m(r.value)})),"text"==t.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=t.modules.filter.tagType&&"select"!=t.modules.filter.tagType&&"textarea"!=t.modules.filter.tagType||r.addEventListener("mousedown",(function(e){e.stopPropagation()}))),o.appendChild(r),t.contentElement.appendChild(o),n||d.headerFilterColumns.push(t)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",t.definition.title)}},{key:"hideHeaderFilterElements",value:function(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")}))}},{key:"showHeaderFilterElements",value:function(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")}))}},{key:"setHeaderFilterFocus",value:function(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())}},{key:"getHeaderFilterValue",value:function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())}},{key:"setHeaderFilterValue",value:function(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()))}},{key:"reloadHeaderFilter",value:function(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()))}},{key:"refreshFilter",value:function(){this.tableInitialized&&("remote"===this.table.options.filterMode?this.reloadData():this.refreshData(!0))}},{key:"trackChanges",value:function(){this.changed=!0,this.dispatch("filter-changed")}},{key:"hasChanged",value:function(){var e=this.changed;return this.changed=!1,e}},{key:"setFilter",value:function(e,t,i,n){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:i,params:n}]),this.addFilter(e)}},{key:"addFilter",value:function(e,t,i,n){var o=this,a=!1;Array.isArray(e)||(e=[{field:e,type:t,value:i,params:n}]),e.forEach((function(e){(e=o.findFilter(e))&&(o.filterList.push(e),a=!0)})),a&&this.trackChanges()}},{key:"findFilter",value:function(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||{})}:r.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return r.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return r.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}},{key:"findSubFilters",value:function(e){var t=this,i=[];return e.forEach((function(e){(e=t.findFilter(e))&&i.push(e)})),!!i.length&&i}},{key:"getFilters",value:function(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))}},{key:"filtersToArray",value:function(e,t){var i=this,n=[];return e.forEach((function(e){var o;Array.isArray(e)?n.push(i.filtersToArray(e,t)):(o={field:e.field,type:e.type,value:e.value},t&&"function"==typeof o.type&&(o.type="function"),n.push(o))})),n}},{key:"getHeaderFilters",value:function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e}},{key:"removeFilter",value:function(t,i,n){var o=this;Array.isArray(t)||(t=[{field:t,type:i,value:n}]),t.forEach((function(t){var i=-1;(i="object"==e(t.field)?o.filterList.findIndex((function(e){return t===e})):o.filterList.findIndex((function(e){return t.field===e.field&&t.type===e.type&&t.value===e.value})))>-1?o.filterList.splice(i,1):console.warn("Filter Error - No matching filter type found, ignoring: ",t.type)})),this.trackChanges()}},{key:"clearFilter",value:function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.trackChanges()}},{key:"clearHeaderFilter",value:function(){var e=this;this.headerFilters={},this.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((function(t){void 0!==t.modules.filter.value&&delete t.modules.filter.value,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)})),this.trackChanges()}},{key:"search",value:function(e,t,i,n){var o=this,a=[],r=[];return Array.isArray(t)||(t=[{field:t,type:i,value:n}]),t.forEach((function(e){(e=o.findFilter(e))&&r.push(e)})),this.table.rowManager.rows.forEach((function(t){var i=!0;r.forEach((function(e){o.filterRecurse(e,t.getData())||(i=!1)})),i&&a.push("data"===e?t.getData("data"):t.getComponent())})),a}},{key:"filter",value:function(e,t){var i=this,n=[],o=[];return this.subscribedExternal("dataFiltering")&&this.dispatchExternal("dataFiltering",this.getFilters()),"remote"!==this.table.options.filterMode&&(this.filterList.length||Object.keys(this.headerFilters).length)?e.forEach((function(e){i.filterRow(e)&&n.push(e)})):n=e.slice(0),this.subscribedExternal("dataFiltered")&&(n.forEach((function(e){o.push(e.getComponent())})),this.dispatchExternal("dataFiltered",this.getFilters(),o)),n}},{key:"filterRow",value:function(e,t){var i=this,n=!0,o=e.getData();for(var a in this.filterList.forEach((function(e){i.filterRecurse(e,o)||(n=!1)})),this.headerFilters)this.headerFilters[a].func(o)||(n=!1);return n}},{key:"filterRecurse",value:function(e,t){var i=this,n=!1;return Array.isArray(e)?e.forEach((function(e){i.filterRecurse(e,t)&&(n=!0)})):n=e.func(t),n}}]),r}(N);pe.moduleName="filter",pe.filters=me;var fe={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 n,o,a,r,s=parseFloat(e.getValue()),l="",u=t.decimal||".",c=t.thousand||",",h=t.negativeSign||"-",d=t.symbol||"",m=!!t.symbolAfter,p=void 0!==t.precision?t.precision:2;if(isNaN(s))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(s<0&&(s=Math.abs(s),l=h),n=!1!==p?s.toFixed(p):s,o=(n=String(n).split("."))[0],a=n.length>1?u+n[1]:"",r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+c+"$2");return m?l+o+a+d:l+d+o+a},link:function(t,i,n){var o=t.getValue(),a=i.urlPrefix||"",r=i.download,s=o,l=document.createElement("a");if(i.labelField&&(s=t.getData()[i.labelField]),i.label)switch(e(i.label)){case"string":s=i.label;break;case"function":s=i.label(t)}if(s){if(i.urlField&&(o=t.getData()[i.urlField]),i.url)switch(e(i.url)){case"string":o=i.url;break;case"function":o=i.url(t)}return l.setAttribute("href",a+o),i.target&&l.setAttribute("target",i.target),i.download&&(r="function"==typeof r?r(t):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(s)),l}return" "},image:function(t,i,n){var o=document.createElement("img"),a=t.getValue();switch(i.urlPrefix&&(a=i.urlPrefix+t.getValue()),i.urlSuffix&&(a+=i.urlSuffix),o.setAttribute("src",a),e(i.height)){case"number":o.style.height=i.height+"px";break;case"string":o.style.height=i.height}switch(e(i.width)){case"number":o.style.width=i.width+"px";break;case"string":o.style.width=i.width}return o.addEventListener("load",(function(){t.getRow().normalizeHeight()})),o},tickCross:function(e,t,i){var n=e.getValue(),o=e.getElement(),a=t.allowEmpty,r=t.allowTruthy,s=void 0!==t.tickElement?t.tickElement:'',l=void 0!==t.crossElement?t.crossElement:'';return r&&n||!0===n||"true"===n||"True"===n||1===n||"1"===n?(o.setAttribute("aria-checked",!0),s||""):!a||"null"!==n&&""!==n&&null!=n?(o.setAttribute("aria-checked",!1),l||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var n=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",a=t.outputFormat||"dd/MM/yyyy HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",s=e.getValue();if(void 0!==n){var l="iso"===o?n.fromISO(String(s)):n.fromFormat(String(s),o);return l.isValid?(t.timezone&&(l=l.shiftTimezone(t.timezone)),l.toFormat(a)):!0!==r&&s?"function"==typeof r?r(s):r:s}console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var n=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",r=void 0!==t.suffix&&t.suffix,s=void 0!==t.unit?t.unit:"days",l=void 0!==t.humanize&&t.humanize,u=void 0!==t.date?t.date:n.now(),c=e.getValue();if(void 0!==n){var h="iso"===o?n.fromISO(String(c)):n.fromFormat(String(c),o);if(!h.isValid)return!0===a?c:"function"==typeof a?a(c):a;if(!l)return parseInt(h.diff(u,s)[s])+(r?" "+r:"")}else console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js")},lookup:function(e,t,i){var n=e.getValue();return void 0===t[n]?(console.warn("Missing display value for "+n),n):t[n]},star:function(e,t,i){var n=e.getValue(),o=e.getElement(),a=t&&t.stars?t.stars:5,r=document.createElement("span"),s=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",s.setAttribute("width","14"),s.setAttribute("height","14"),s.setAttribute("viewBox","0 0 512 512"),s.setAttribute("xml:space","preserve"),s.style.padding="0 1px",n=n&&!isNaN(n)?parseInt(n):0,n=Math.max(0,Math.min(n,a));for(var l=1;l<=a;l++){var u=s.cloneNode(!0);u.innerHTML=l<=n?'':'',r.appendChild(u)}return o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.setAttribute("aria-label",n),r},traffic:function(t,i,n){var o,a,r=this.sanitizeHTML(t.getValue())||0,s=document.createElement("span"),l=i&&i.max?i.max:100,u=i&&i.min?i.min:0,c=i&&void 0!==i.color?i.color:["red","orange","green"],h="#666666";if(!isNaN(r)&&void 0!==t.getValue()){switch(s.classList.add("tabulator-traffic-light"),a=parseFloat(r)<=l?parseFloat(r):l,a=parseFloat(a)>=u?parseFloat(a):u,o=(l-u)/100,a=Math.round((a-u)/o),e(c)){case"string":h=c;break;case"function":h=c(r);break;case"object":if(Array.isArray(c)){var d=100/c.length,m=Math.floor(a/d);m=Math.min(m,c.length-1),h=c[m=Math.max(m,0)];break}}return s.style.backgroundColor=h,s}},progress:function(t,i,n){var o,a,r,s,l,u=this.sanitizeHTML(t.getValue())||0,c=t.getElement(),h=i&&i.max?i.max:100,d=i&&i.min?i.min:0,m=i&&i.legendAlign?i.legendAlign:"center";switch(a=parseFloat(u)<=h?parseFloat(u):h,a=parseFloat(a)>=d?parseFloat(a):d,o=(h-d)/100,a=Math.round((a-d)/o),e(i.color)){case"string":r=i.color;break;case"function":r=i.color(u);break;case"object":if(Array.isArray(i.color)){var p=100/i.color.length,f=Math.floor(a/p);f=Math.min(f,i.color.length-1),f=Math.max(f,0),r=i.color[f];break}default:r="#2DC214"}switch(e(i.legend)){case"string":s=i.legend;break;case"function":s=i.legend(u);break;case"boolean":s=u;break;default:s=!1}switch(e(i.legendColor)){case"string":l=i.legendColor;break;case"function":l=i.legendColor(u);break;case"object":if(Array.isArray(i.legendColor)){p=100/i.legendColor.length,f=Math.floor(a/p);f=Math.min(f,i.legendColor.length-1),f=Math.max(f,0),l=i.legendColor[f]}break;default:l="#000"}c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a);var g=document.createElement("div");g.style.display="inline-block",g.style.position="absolute",g.style.width=a+"%",g.style.backgroundColor=r,g.style.height="100%",g.setAttribute("data-max",h),g.setAttribute("data-min",d);var v=document.createElement("div");if(v.style.position="relative",v.style.width="100%",v.style.height="100%",s){var y=document.createElement("div");y.style.position="absolute",y.style.top=0,y.style.left=0,y.style.textAlign=m,y.style.width="100%",y.style.color=l,y.innerHTML=s}return n((function(){if(!(t instanceof b)){var e=document.createElement("div");e.style.position="absolute",e.style.top="4px",e.style.bottom="4px",e.style.left="4px",e.style.right="4px",c.appendChild(e),c=e}c.appendChild(v),v.appendChild(g),s&&v.appendChild(y)})),""},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){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1||""},handle:function(e,t,i){return e.getElement().classList.add("tabulator-row-handle"),"
"},responsiveCollapse:function(e,t,i){var n=document.createElement("div"),o=e.getRow()._row.modules.responsiveLayout;function a(e){var t=o.element;o.open=e,t&&(o.open?(n.classList.add("open"),t.style.display=""):(n.classList.remove("open"),t.style.display="none"))}return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="+-",e.getElement().classList.add("tabulator-row-handle"),n.addEventListener("click",(function(e){e.stopImmediatePropagation(),a(!o.open)})),a(o.open),n},rowSelection:function(e,t,i){var n=this,o=document.createElement("input"),a=!1;if(o.type="checkbox",o.setAttribute("aria-label","Select Row"),this.table.modExists("selectRow",!0))if(o.addEventListener("click",(function(e){e.stopPropagation()})),"function"==typeof e.getRow){var r=e.getRow();r instanceof M?(o.addEventListener("change",(function(e){"click"===n.table.options.selectableRangeMode&&a?a=!1:r.toggleSelect()})),"click"===this.table.options.selectableRangeMode&&o.addEventListener("click",(function(e){a=!0,n.table.modules.selectRow.handleComplexRowClick(r._row,e)})),o.checked=r.isSelected&&r.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(r,o)):o=""}else o.addEventListener("change",(function(e){n.table.modules.selectRow.selectedRows.length?n.table.deselectRow():n.table.selectRow(t.rowRange)})),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},ge=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).registerColumnOption("formatter"),i.registerColumnOption("formatterParams"),i.registerColumnOption("formatterPrint"),i.registerColumnOption("formatterPrintParams"),i.registerColumnOption("formatterClipboard"),i.registerColumnOption("formatterClipboardParams"),i.registerColumnOption("formatterHtmlOutput"),i.registerColumnOption("formatterHtmlOutputParams"),i.registerColumnOption("titleFormatter"),i.registerColumnOption("titleFormatterParams"),i}return o(r,[{key:"initialize",value:function(){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))}},{key:"initializeColumn",value:function(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"))}},{key:"lookupFormatter",value:function(t,i){var n={params:t.definition["formatter"+i+"Params"]||{}},o=t.definition["formatter"+i];switch(e(o)){case"string":r.formatters[o]?n.formatter=r.formatters[o]:(console.warn("Formatter Error - No such formatter found: ",o),n.formatter=r.formatters.plaintext);break;case"function":n.formatter=o;break;default:n.formatter=r.formatters.plaintext}return n}},{key:"cellRendered",value:function(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)}},{key:"formatHeader",value:function(e,t,i){var n,o,a,r;return e.definition.titleFormatter?(n=this.getFormatter(e.definition.titleFormatter),a=function(t){e.titleFormatterRendered=t},r={getValue:function(){return t},getElement:function(){return i}},o="function"==typeof(o=e.definition.titleFormatterParams||{})?o():o,n.call(this,r,o,a)):t}},{key:"formatValue",value:function(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}))}},{key:"formatExportValue",value:function(e,t){var i,n=e.column.modules.format[t];if(n){return i="function"==typeof n.params?n.params(component):n.params,n.formatter.call(this,e.getComponent(),i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}return this.formatValue(e)}},{key:"sanitizeHTML",value:function(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,(function(e){return t[e]}))}return e}},{key:"emptyToSpace",value:function(e){return null==e||""===e?" ":e}},{key:"getFormatter",value:function(t){switch(e(t)){case"string":r.formatters[t]?t=r.formatters[t]:(console.warn("Formatter Error - No such formatter found: ",t),t=r.formatters.plaintext);break;case"function":t=t;break;default:t=r.formatters.plaintext}return t}}]),r}(N);ge.moduleName="format",ge.formatters=fe;var ve=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).leftColumns=[],o.rightColumns=[],o.leftMargin=0,o.rightMargin=0,o.rightPadding=0,o.initializationMode="left",o.active=!1,o.scrollEndTimer=!1,o.blocked=!0,o.registerColumnOption("frozen"),o}return o(n,[{key:"reset",value:function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0}},{key:"initialize",value:function(){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("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("columns-loading",this.reset.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))}},{key:"blockLayout",value:function(){this.blocked=!0}},{key:"unblockLayout",value:function(){this.blocked=!1}},{key:"layoutCell",value:function(e){this.layoutElement(e.element,e.column)}},{key:"initializeColumn",value:function(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")}},{key:"frozenCheck",value:function(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}},{key:"scrollHorizontal",value:function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),e=this.table.rowManager.getVisibleRows(),this.calcMargins(!0),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach((function(e){"row"===e.type&&t.layoutRow(e)})))}},{key:"calcMargins",value:function(e){e||(this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.rowManager.tableElement.style.marginRight=this.rightMargin),this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft}},{key:"layoutCalcRows",value:function(){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()))}},{key:"layoutGroupCalcs",value:function(e){var t=this;e.forEach((function(e){e.calcs.top&&t.layoutRow(e.calcs.top),e.calcs.bottom&&t.layoutRow(e.calcs.bottom),e.groupList&&e.groupList.length&&t.layoutGroupCalcs(e.groupList&&e.groupList)}))}},{key:"layoutColumnPosition",value:function(e){var t=this,i=[],n=0,o=0;this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.table.columnManager.element.style.paddingRight=this.rightMargin,this.leftColumns.forEach((function(o,a){if(o.modules.frozen.margin=n+t.table.columnManager.scrollLeft+"px",o.visible&&(n+=o.getWidth()),a==t.leftColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup){var r=t.getColGroupParentElement(o);i.includes(r)||(t.layoutElement(r,o),i.push(r)),o.modules.frozen.edge&&r.classList.add("tabulator-frozen-"+o.modules.frozen.position)}else t.layoutElement(o.getElement(),o);e&&o.cells.forEach((function(e){t.layoutElement(e.getElement(!0),o)}))})),this.rightColumns.forEach((function(i,n){i.visible&&(o+=i.getWidth()),i.modules.frozen.margin=t.rightPadding-o+"px",n==t.rightColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup?t.layoutElement(t.getColGroupParentElement(i),i):t.layoutElement(i.getElement(),i),e&&i.cells.forEach((function(e){t.layoutElement(e.getElement(!0),i)}))}))}},{key:"getColGroupParentElement",value:function(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()}},{key:"layout",value:function(){var e=this;this.active&&!this.blocked&&(this.calcMargins(),this.table.rowManager.getDisplayRows().forEach((function(t){"row"===t.type&&e.layoutRow(t)})),this.layoutCalcRows(),this.layoutColumnPosition(!0))}},{key:"layoutRow",value:function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,"fitDataFill"===this.table.options.layout&&this.rightColumns.length&&(this.table.rowManager.getTableElement().style.minWidth="calc(100% - "+this.rightMargin+")"),this.leftColumns.forEach((function(i){var n=e.getCell(i);n&&t.layoutElement(n.getElement(!0),i)})),this.rightColumns.forEach((function(i){var n=e.getCell(i);n&&t.layoutElement(n.getElement(!0),i)}))}},{key:"layoutElement",value:function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))}},{key:"_calcSpace",value:function(e,t){for(var i=0,n=0;n-1}},{key:"isFrozen",value:function(){return!!this.rows.length}},{key:"visibleRows",value:function(e,t){return this.rows.forEach((function(e){t.push(e)})),t}},{key:"getRows",value:function(e){var t=e.slice(0);return this.rows.forEach((function(e){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t}},{key:"freezeRow",value:function(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.table.rowManager.adjustTableSize(),this.rows.push(e),this.refreshData(!1,"display"),this.styleRows())}},{key:"unfreezeRow",value:function(e){this.rows.indexOf(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")}},{key:"detachRow",value:function(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)}}},{key:"styleRows",value:function(e){var t=this;this.rows.forEach((function(e,i){t.table.rowManager.styleRow(e,i)}))}}]),n}(N);be.moduleName="frozenRows";var ye=function(){function e(i){return t(this,e),this._group=i,this.type="GroupComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._group.groupManager.table.componentFunctionBinder.handle("row",e._group,t)}})}return o(e,[{key:"getKey",value:function(){return this._group.key}},{key:"getField",value:function(){return this._group.field}},{key:"getElement",value:function(){return this._group.element}},{key:"getRows",value:function(){return this._group.getRows(!0)}},{key:"getSubGroups",value:function(){return this._group.getSubGroups(!0)}},{key:"getParentGroup",value:function(){return!!this._group.parent&&this._group.parent.getComponent()}},{key:"isVisible",value:function(){return this._group.visible}},{key:"show",value:function(){this._group.show()}},{key:"hide",value:function(){this._group.hide()}},{key:"toggle",value:function(){this._group.toggleVisibility()}},{key:"_getSelf",value:function(){return this._group}},{key:"getTable",value:function(){return this._group.groupManager.table}}]),e}(),we=function(){function e(i,n,o,a,r,s,l){t(this,e),this.groupManager=i,this.parent=n,this.key=a,this.level=o,this.field=r,this.hasSubGroups=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.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)}},{key:"scrollHeader",value:function(e){this.arrowElement&&(this.arrowElement.style.marginLeft=e,this.groupList.forEach((function(t){t.scrollHeader(e)})))}},{key:"getRowIndex",value:function(e){}},{key:"conformRowData",value:function(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}},{key:"removeRow",value:function(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.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))}},{key:"removeGroup",value:function(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)))}},{key:"getHeadersAndRows",value:function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach((function(i){t=t.concat(i.getHeadersAndRows(e))})):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t}},{key:"getData",value:function(e,t){var i=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach((function(e){i.push(e.getData(t||"data"))})),i}},{key:"getRowCount",value:function(){var e=0;return this.groupList.length?this.groupList.forEach((function(t){e+=t.getRowCount()})):e=this.rows.length,e}},{key:"toggleVisibility",value:function(){this.visible?this.hide():this.show()}},{key:"hide",value:function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((function(e){e.getHeadersAndRows().forEach((function(e){e.detachElement()}))})):this.rows.forEach((function(e){var t=e.getElement();t.parentNode.removeChild(t)})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}},{key:"show",value:function(){if(this.visible=!0,"classic"!=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((function(t){t.getHeadersAndRows().forEach((function(t){var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i}))})):this.rows.forEach((function(t){var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!0)}},{key:"_visSet",value:function(){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()))}},{key:"getRowGroup",value:function(e){var t=!1;return this.groupList.length?this.groupList.forEach((function(i){var n=i.getRowGroup(e);n&&(t=n)})):this.rows.find((function(t){return t===e}))&&(t=this),t}},{key:"getSubGroups",value:function(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"getRows",value:function(e){var t=[];return this.rows.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"generateGroupHeaderContents",value:function(){var e=[];for(this.rows.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)}},{key:"getPath",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.unshift(this.key),this.parent&&this.parent.getPath(e),e}},{key:"getElement",value:function(){return this.elementContents?this.element:this.generateElement()}},{key:"generateElement",value:function(){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;en.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",(function(t,i){e.headerGenerator[0]=function(e,n,o){return(void 0===e?"":e)+"("+n+" "+(1===n?t:i.groups.items)+")"}})),this.groupIDLookups=[],Array.isArray(t)||t)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((function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(t)||(t=[t]),t.forEach((function(t,i){var n,o;n="function"==typeof t?t:(o=e.table.columnManager.getColumnByField(t))?function(e){return o.getFieldValue(e)}:function(e){return e[t]},e.groupIDLookups.push({field:"function"!=typeof t&&t,func:n,values:!!e.allowedValues&&e.allowedValues[i]})})),i&&(Array.isArray(i)||(i=[i]),i.forEach((function(e){})),this.startOpen=i),n&&(this.headerGenerator=Array.isArray(n)?n:[n])}}},{key:"rowSample",value:function(e,t){var i=this.getGroups(!1)[0];return t.push(i.getRows(!1)[0]),t}},{key:"virtualRenderFill",value:function(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();t=t.filter((function(e){return"group"!==e.type})),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}},{key:"rowAddingIndex",value:function(e,t,i){this.assignRowToGroup(e);var n=e.modules.group.rows;return n.length>1&&(!t||t&&-1==n.indexOf(t)?i?n[0]!==e&&(t=n[0],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):n[n.length-1]!==e&&(t=n[n.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}},{key:"trackChanges",value:function(){this.dispatch("group-changed")}},{key:"setGroupBy",value:function(e){this.table.options.groupBy=e,this.initialized?this.configureGroupSetup():this.initialize(),this.refreshData(),this.trackChanges()}},{key:"setGroupValues",value:function(e){this.table.options.groupValues=e,this.configureGroupSetup(),this.refreshData(),this.trackChanges()}},{key:"setGroupStartOpen",value:function(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")}},{key:"setGroupHeader",value:function(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")}},{key:"userGetGroups",value:function(e){return this.getGroups(!0)}},{key:"userGetGroupedData",value:function(){return this.table.options.groupBy?this.getGroupedData():this.getData()}},{key:"rowGetGroup",value:function(e){return!!e.modules.group&&e.modules.group.getComponent()}},{key:"rowMoving",value:function(e,t,i){!i&&t instanceof we&&(t=this.table.rowManager.prevDisplayRow(e)||t);var n=t instanceof we?t:t.modules.group,o=e instanceof we?e:e.modules.group;n===o?this.table.rowManager.moveRowInArray(n.rows,e,t,i):(o&&o.removeRow(e),n.insertRow(e,t,i))}},{key:"rowDeleting",value:function(e){e.modules.group&&e.modules.group.removeRow(e)}},{key:"rowsUpdated",value:function(e){this.updateGroupRows(!0)}},{key:"cellUpdated",value:function(e){this.reassignRowToGroup(e.row)}},{key:"setDisplayIndex",value:function(e){this.displayIndex=e}},{key:"getDisplayIndex",value:function(){return this.displayIndex}},{key:"getRows",value:function(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)}},{key:"getGroups",value:function(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"getChildGroups",value:function(e){var t=this,i=[];return e||(e=this),e.groupList.forEach((function(e){e.groupList.length?i=i.concat(t.getChildGroups(e)):i.push(e)})),i}},{key:"wipe",value:function(){this.groupList.forEach((function(e){e.wipe()}))}},{key:"pullGroupListData",value:function(e){var t=this,i=[];return e.forEach((function(e){var n={level:0,rowCount:0,headerContent:""},o=[];e.hasSubGroups?(o=t.pullGroupListData(e.groupList),n.level=e.level,n.rowCount=o.length-e.groupList.length,n.headerContent=e.generator(e.key,n.rowCount,e.rows,e),i.push(n),i=i.concat(o)):(n.level=e.level,n.headerContent=e.generator(e.key,e.rows.length,e.rows,e),n.rowCount=e.getRows().length,i.push(n),e.getRows().forEach((function(e){i.push(e.getData("data"))})))})),i}},{key:"getGroupedData",value:function(){return this.pullGroupListData(this.groupList)}},{key:"getRowGroup",value:function(e){var t=!1;return this.groupList.forEach((function(i){var n=i.getRowGroup(e);n&&(t=n)})),t}},{key:"countGroups",value:function(){return this.groupList.length}},{key:"generateGroups",value:function(e){var t=this,i=this.groups;this.groups={},this.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((function(e){t.createGroup(e,0,i)})),e.forEach((function(e){t.assignRowToExistingGroup(e,i)}))):e.forEach((function(e){t.assignRowToGroup(e,i)}))}},{key:"createGroup",value:function(e,t,i){var n,o=t+"_"+e;i=i||[],n=new we(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],i[o]),this.groups[o]=n,this.groupList.push(n)}},{key:"assignRowToExistingGroup",value:function(e,t){var i="0_"+this.groupIDLookups[0].func(e.getData());this.groups[i]&&this.groups[i].addRow(e)}},{key:"assignRowToGroup",value:function(e,t){var i=this.groupIDLookups[0].func(e.getData()),n=!this.groups["0_"+i];return n&&this.createGroup(i,0,t),this.groups["0_"+i].addRow(e),!n}},{key:"reassignRowToGroup",value:function(e){if("row"===e.type){var t=e.modules.group,i=t.getPath(),n=this.getExpectedPath(e);i.length==n.length&&i.every((function(e,t){return e===n[t]}))||(t.removeRow(e),this.assignRowToGroup(e,this.groups),this.refreshData(!0))}}},{key:"getExpectedPath",value:function(e){var t=[],i=e.getData();return this.groupIDLookups.forEach((function(e){t.push(e.func(i))})),t}},{key:"updateGroupRows",value:function(e){var t=[];return this.groupList.forEach((function(e){t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0,this.displayHandler),t}},{key:"scrollHeaders",value:function(e){"virtual"===this.table.options.renderHorizontal&&(e-=this.table.columnManager.renderer.vDomPadLeft),e+="px",this.groupList.forEach((function(t){t.scrollHeader(e)}))}},{key:"removeGroup",value:function(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))}}]),n}(N);Ce.moduleName="groupRows";var ke=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).history=[],o.index=-1,o.registerTableOption("history",!1),o}return o(n,[{key:"initialize",value:function(){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))}},{key:"rowMoved",value:function(e,t,i){this.action("rowMove",e,{posFrom:this.table.rowManager.getRowPosition(e),posTo:this.table.rowManager.getRowPosition(t),to:t,after:i})}},{key:"rowAdded",value:function(e,t,i,n){this.action("rowAdd",e,{data:t,pos:i,index:n})}},{key:"rowDeleted",value:function(e){var t,i;this.table.options.groupBy?(t=(i=e.getComponent().getGroup().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})}},{key:"cellUpdated",value:function(e){this.action("cellEdit",e,{oldValue:e.oldValue,newValue:e.value})}},{key:"clear",value:function(){this.history=[],this.index=-1}},{key:"action",value:function(e,t,i){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:i}),this.index++}},{key:"getHistoryUndoSize",value:function(){return this.index+1}},{key:"getHistoryRedoSize",value:function(){return this.history.length-(this.index+1)}},{key:"clearComponentHistory",value:function(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))}},{key:"undo",value:function(){if(this.index>-1){var 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("History Undo Error - No more history to undo"),!1}},{key:"redo",value:function(){if(this.history.length-1>this.index){this.index++;var 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("History Redo Error - No more history to redo"),!1}},{key:"_rebindRow",value:function(e,t){this.history.forEach((function(i){if(i.component instanceof L)i.component===e&&(i.component=t);else if(i.component instanceof y&&i.component.row===e){var n=i.component.column.getField();n&&(i.component=t.getCell(n))}}))}}]),n}(N);ke.moduleName="history",ke.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue),e.component.cellRendered()},rowAdd:function(e){e.component.deleteActual()},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)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},ke.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)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}};var Ee=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).fieldIndex=[],i.hasIndex=!1,i}return o(r,[{key:"initialize",value:function(){this.tableElementCheck()}},{key:"tableElementCheck",value:function(){this.table.originalElement&&"TABLE"===this.table.originalElement.tagName&&this.parseTable()}},{key:"parseTable",value:function(){var e=this.table.originalElement,t=this.table.options,i=(t.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],o=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),n=n?n.getElementsByTagName("tr"):[],this._extractOptions(e,t),i.length?this._extractHeaders(i,n):this._generateBlankHeaders(i,n);for(var a=0;a-1&&e.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)}},{key:"clearBindings",value:function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)}},{key:"checkBinding",value:function(e,t){var i=this,n=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach((function(e){-1==i.pressedKeys.indexOf(e)&&(n=!1)})),n&&t.action.call(this,e),!0)}}]),r}(N);Me.moduleName="keybindings",Me.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:["ctrl + 90","meta + 90"],redo:["ctrl + 89","meta + 89"],copyToClipboard:["ctrl + 67","meta + 89"]},Me.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;t.element.scrollHeight;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,n=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i<=n?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)},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)}};var Le=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).menuContainer=null,o.menuElements=[],o.blurEvent=o.hideMenu.bind(l(o)),o.escEvent=o.escMenu.bind(l(o)),o.nestedMenuBlock=!1,o.positionReversedX=!1,o.currentComponent=null,o.columnSubscribers={},o.registerTableOption("rowContextMenu",!1),o.registerTableOption("rowClickMenu",!1),o.registerTableOption("groupContextMenu",!1),o.registerTableOption("groupClickMenu",!1),o.registerTableOption("menuContainer",!1),o.registerColumnOption("headerContextMenu"),o.registerColumnOption("headerClickMenu"),o.registerColumnOption("headerMenu"),o.registerColumnOption("contextMenu"),o.registerColumnOption("clickMenu"),o}return o(n,[{key:"initialize",value:function(){this.lookupMenuContainer(),this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}},{key:"lookupMenuContainer",value:function(){this.menuContainer=this.table.options.menuContainer,"string"==typeof this.menuContainer?(this.menuContainer=document.querySelector(this.menuContainer),this.menuContainer||console.warn("Menu Error - no container element found matching selector:",this.table.options.menuContainer,"(defaulting to document body)")):!0===this.menuContainer&&(this.menuContainer=this.table.element),this.menuContainer&&!this.checkMenuContainerIsParent(this.menuContainer)&&(this.menuContainer=!1,console.warn("Menu Error - container element does not contain this table:",this.table.options.menuContainer,"(defaulting to document body)")),this.menuContainer||(this.menuContainer=document.body)}},{key:"checkMenuContainerIsParent",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.table.element;return e===t||!!t.parentNode&&this.checkMenuContainerIsParent(e,t.parentNode)}},{key:"initializeRowWatchers",value:function(){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))}},{key:"initializeGroupWatchers",value:function(){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))}},{key:"initializeColumn",value:function(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.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))}},{key:"initializeColumnHeaderMenu",value:function(e){var t,i=this;(t=document.createElement("span")).classList.add("tabulator-header-menu-button"),t.innerHTML="⋮",t.addEventListener("click",(function(t){t.stopPropagation(),t.preventDefault(),i.loadMenuEvent(e.definition.headerMenu,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}},{key:"loadMenuTableCellEvent",value:function(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadMenuEvent(i.column.definition[e],t,i)}},{key:"loadMenuTableColumnEvent",value:function(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadMenuEvent(i.definition[e],t,i)}},{key:"loadMenuEvent",value:function(e,t,i){i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,i.getComponent(),t):e,this.loadMenu(t,i,e)}},{key:"loadMenu",value:function(e,t,i,n){var o=this,a=!(e instanceof MouseEvent),r=document.createElement("div");if(r.classList.add("tabulator-menu"),a||e.preventDefault(),i&&i.length){if(!n){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout((function(){o.nestedMenuBlock=!1}),100);this.hideMenu(),this.menuElements=[]}i.forEach((function(e){var i=document.createElement("div"),n=e.label,a=e.disabled;e.separator?i.classList.add("tabulator-menu-separator"):(i.classList.add("tabulator-menu-item"),"function"==typeof n&&(n=n.call(o.table,t.getComponent())),n instanceof Node?i.appendChild(n):i.innerHTML=n,"function"==typeof a&&(a=a.call(o.table,t.getComponent())),a?(i.classList.add("tabulator-menu-item-disabled"),i.addEventListener("click",(function(e){e.stopPropagation()}))):e.menu&&e.menu.length?i.addEventListener("click",(function(n){n.stopPropagation(),o.hideOldSubMenus(r),o.loadMenu(n,t,e.menu,i)})):e.action&&i.addEventListener("click",(function(i){e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),r.appendChild(i)})),r.addEventListener("click",(function(e){o.hideMenu()})),this.menuElements.push(r),this.positionMenu(r,n,a,e),this.currentComponent=t,this.dispatchExternal("menuOpened",t.getComponent())}}},{key:"hideOldSubMenus",value:function(e){var t=this.menuElements.indexOf(e);if(t>-1)for(var i=this.menuElements.length-1;i>t;i--){var n=this.menuElements[i];n.parentNode&&n.parentNode.removeChild(n),this.menuElements.pop()}}},{key:"positionMenu",value:function(e,t,i,n){var o,a,r,s=this;t?(o=(r=C.elOffset(t)).left+t.offsetWidth,a=r.top-1):(o=i?n.touches[0].pageX:n.pageX,a=i?n.touches[0].pageY:n.pageY,this.menuContainer!==document.body&&(o-=(r=C.elOffset(this.menuContainer)).left,a-=r.top),this.positionReversedX=!1),e.style.top=a+"px",e.style.left=o+"px",setTimeout((function(){s.table.rowManager.element.addEventListener("scroll",s.blurEvent),document.body.addEventListener("click",s.blurEvent),document.body.addEventListener("contextmenu",s.blurEvent),window.addEventListener("resize",s.blurEvent),document.body.addEventListener("keydown",s.escEvent)}),100),this.menuContainer.appendChild(e),(o+e.offsetWidth>=this.menuContainer.offsetWidth||this.positionReversedX)&&(e.style.left="",e.style.right=t?this.menuContainer.offsetWidth-r.left+"px":this.menuContainer.offsetWidth-o+"px",this.positionReversedX=!0),a+e.offsetHeight>this.menuContainer.offsetHeight&&(e.style.top=t?parseInt(e.style.top)-e.offsetHeight+t.offsetHeight+1+"px":parseInt(e.style.top)-e.offsetHeight+"px")}},{key:"isOpen",value:function(){return!!this.menuElements.length}},{key:"escMenu",value:function(e){27==e.keyCode&&this.hideMenu()}},{key:"hideMenu",value:function(){this.menuElements.forEach((function(e){e.parentNode&&e.parentNode.removeChild(e)})),document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent),this.currentComponent&&(this.dispatchExternal("menuClosed",this.currentComponent.getComponent()),this.currentComponent=null)}}]),n}(N);Le.moduleName="menu";var De=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).placeholderElement=o.createPlaceholderElement(),o.hoverElement=!1,o.checkTimeout=!1,o.checkPeriod=250,o.moving=!1,o.toCol=!1,o.toColAfter=!1,o.startX=0,o.autoScrollMargin=40,o.autoScrollStep=5,o.autoScrollTimeout=!1,o.touchMove=!1,o.moveHover=o.moveHover.bind(l(o)),o.endMove=o.endMove.bind(l(o)),o.registerTableOption("movableColumns",!1),o}return o(n,[{key:"createPlaceholderElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e}},{key:"initialize",value:function(){this.table.options.movableColumns&&this.subscribe("column-init",this.initializeColumn.bind(this))}},{key:"initializeColumn",value:function(e){var t,i=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===i.moving.parent&&((i.touchMove?n.touches[0].pageX:n.pageX)-C.elOffset(t).left+i.table.columnManager.element.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=n}},{key:"bindTouchEvents",value:function(e){var t,i,n,o,a,r,s=this,l=e.getElement(),u=!1;l.addEventListener("touchstart",(function(l){s.checkTimeout=setTimeout((function(){s.touchMove=!0,t=e.nextColumn(),n=t?t.getWidth()/2:0,i=e.prevColumn(),o=i?i.getWidth()/2:0,a=0,r=0,u=!1,s.startMove(l,e)}),s.checkPeriod)}),{passive:!0}),l.addEventListener("touchmove",(function(l){var c,h;s.moving&&(s.moveHover(l),u||(u=l.touches[0].pageX),(c=l.touches[0].pageX-u)>0?t&&c-a>n&&(h=t)!==e&&(u=l.touches[0].pageX,h.getElement().parentNode.insertBefore(s.placeholderElement,h.getElement().nextSibling),s.moveColumn(h,!0)):i&&-c-r>o&&(h=i)!==e&&(u=l.touches[0].pageX,h.getElement().parentNode.insertBefore(s.placeholderElement,h.getElement()),s.moveColumn(h,!1)),h&&(t=h.nextColumn(),a=n,n=t?t.getWidth()/2:0,i=h.prevColumn(),r=o,o=i?i.getWidth()/2:0))}),{passive:!0}),l.addEventListener("touchend",(function(e){s.checkTimeout&&clearTimeout(s.checkTimeout),s.moving&&s.endMove(e)}))}},{key:"startMove",value:function(e,t){var i=t.getElement(),n=this.table.columnManager.getElement(),o=this.table.columnManager.getHeadersElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-C.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"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom=n.clientHeight-o.offsetHeight+"px",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)}},{key:"_bindMouseMove",value:function(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)}))}},{key:"_unbindMouseMove",value:function(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)}))}},{key:"moveColumn",value:function(e,t){var i=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach((function(e,t){var n=e.getElement(!0);n.parentNode&&i[t]&&n.parentNode.insertBefore(i[t].getElement(),n.nextSibling)})):e.getCells().forEach((function(e,t){var n=e.getElement(!0);n.parentNode&&i[t]&&n.parentNode.insertBefore(i[t].getElement(),n)}))}},{key:"endMove",value:function(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)))}},{key:"moveHover",value:function(e){var t,i=this,n=this.table.columnManager.getElement(),o=n.scrollLeft,a=(this.touchMove?e.touches[0].pageX:e.pageX)-C.elOffset(n).left+o;this.hoverElement.style.left=a-this.startX+"px",a-oe.getHeight()/2?t.toRow===e&&t.toRowAfter||((n=e.getElement()).parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(n=e.getElement()).previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=i}},{key:"initializeRow",value:function(e){var t,i=this,n={};n.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),n.mousemove=function(t){var n=e.getElement();t.pageY-C.elOffset(n).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||(n.parentNode.insertBefore(i.placeholderElement,n.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(n.parentNode.insertBefore(i.placeholderElement,n),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=n}},{key:"initializeColumn",value:function(e){e.definition.rowHandle&&!1!==this.table.options.movableRows&&(this.hasHandle=!0)}},{key:"initializeCell",value:function(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)}}},{key:"bindTouchEvents",value:function(e,t){var i,n,o,a,r,s,l=this,u=!1;t.addEventListener("touchstart",(function(t){l.checkTimeout=setTimeout((function(){l.touchMove=!0,i=e.nextRow(),o=i?i.getHeight()/2:0,n=e.prevRow(),a=n?n.getHeight()/2:0,r=0,s=0,u=!1,l.startMove(t,e)}),l.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",(function(t){var c,h;l.moving&&(t.preventDefault(),l.moveHover(t),u||(u=t.touches[0].pageY),(c=t.touches[0].pageY-u)>0?i&&c-r>o&&(h=i)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveRow(h,!0)):n&&-c-s>a&&(h=n)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveRow(h,!1)),h&&(i=h.nextRow(),r=o,o=i?i.getHeight()/2:0,n=h.prevRow(),s=a,a=n?n.getHeight()/2:0))})),t.addEventListener("touchend",(function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&(l.endMove(e),l.touchMove=!1)}))}},{key:"_bindMouseMove",value:function(){this.table.rowManager.getDisplayRows().forEach((function(e){("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)}))}},{key:"_unbindMouseMove",value:function(){this.table.rowManager.getDisplayRows().forEach((function(e){("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)}))}},{key:"startMove",value:function(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)}},{key:"setStartPosition",value:function(e,t){var i,n,o=this.touchMove?e.touches[0].pageX:e.pageX,a=this.touchMove?e.touches[0].pageY:e.pageY;i=t.getElement(),this.connection?(n=i.getBoundingClientRect(),this.startX=n.left-o+window.pageXOffset,this.startY=n.top-a+window.pageYOffset):this.startY=a-i.getBoundingClientRect().top}},{key:"endMove",value:function(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()))}},{key:"moveRow",value:function(e,t){this.toRow=e,this.toRowAfter=t}},{key:"moveHover",value:function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)}},{key:"moveHoverTable",value:function(e){var t=this.table.rowManager.getElement(),i=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+i;this.hoverElement.style.top=n-this.startY+"px"}},{key:"moveHoverConnections",value:function(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"}},{key:"elementRowDrop",value:function(e,t,i){this.dispatchExternal("movableRowsElementDrop",e,t,!!i&&i.getComponent())}},{key:"connectToTables",value:function(e){var t,i=this;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((function(e){"string"==typeof e?i.connectionElements=i.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):i.connectionElements.push(e)})),this.connectionElements.forEach((function(e){var t=function(t){i.elementRowDrop(t,e,i.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")})))}},{key:"disconnectFromTables",value:function(){var e;this.connectionSelectorsTables&&(e=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStop",e),this.commsSend(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((function(e){e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent}))}},{key:"connect",value:function(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((function(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)}},{key:"disconnect",value:function(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((function(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")}},{key:"dropComplete",value:function(t,i,n){var o=!1;if(n){switch(e(this.table.options.movableRowsSender)){case"string":o=this.senders[this.table.options.movableRowsSender];break;case"function":o=this.table.options.movableRowsSender}o?o.call(this,this.moving.getComponent(),i?i.getComponent():void 0,t):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.dispatchExternal("movableRowsSent",this.moving.getComponent(),i?i.getComponent():void 0,t)}else this.dispatchExternal("movableRowsSentFailed",this.moving.getComponent(),i?i.getComponent():void 0,t);this.endMove()}},{key:"tableRowDrop",value:function(t,i){var n=!1,o=!1;switch(t.stopImmediatePropagation(),e(this.table.options.movableRowsReceiver)){case"string":n=this.receivers[this.table.options.movableRowsReceiver];break;case"function":n=this.table.options.movableRowsReceiver}n?o=n.call(this,this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),o?this.dispatchExternal("movableRowsReceived",this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable):this.dispatchExternal("movableRowsReceivedFailed",this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable),this.commsSend(this.connectedTable,"moveRow","dropcomplete",{row:i,success:o})}},{key:"commsReceived",value:function(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)}}}]),r}(N);Se.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)}},Se.prototype.senders={delete:function(e,t,i){e.delete()}},Se.moduleName="moveRow";var Fe=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).allowedTypes=["","data","edit","clipboard"],i.enabled=!0,i.registerColumnOption("mutator"),i.registerColumnOption("mutatorParams"),i.registerColumnOption("mutatorData"),i.registerColumnOption("mutatorDataParams"),i.registerColumnOption("mutatorEdit"),i.registerColumnOption("mutatorEditParams"),i.registerColumnOption("mutatorClipboard"),i.registerColumnOption("mutatorClipboardParams"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-value-changing",this.transformCell.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))}},{key:"rowDataChanged",value:function(e,t,i){return this.transformRow(t,"data",i)}},{key:"initializeColumn",value:function(e){var t=this,i=!1,n={};this.allowedTypes.forEach((function(o){var a,r="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));e.definition[r]&&(a=t.lookupMutator(e.definition[r]))&&(i=!0,n[r]={mutator:a,params:e.definition[r+"Params"]||{}})})),i&&(e.modules.mutate=n)}},{key:"lookupMutator",value:function(t){var i=!1;switch(e(t)){case"string":r.mutators[t]?i=r.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":i=t}return i}},{key:"transformRow",value:function(e,t,i){var n,o="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse((function(a){var r,s,l;a.modules.mutate&&(r=a.modules.mutate[o]||a.modules.mutate.mutator||!1)&&(n=a.getFieldValue(void 0!==i?i:e),"data"!=t&&void 0===n||(l=a.getComponent(),s="function"==typeof r.params?r.params(n,e,t,l):r.params,a.setFieldValue(e,r.mutator(n,e,t,s,l))))})),e}},{key:"transformCell",value:function(e,t){if(e.column.modules.mutate){var i=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,n={};if(i)return n=Object.assign(n,e.row.getData()),e.column.setFieldValue(n,t),i.mutator(t,n,"edit",i.params,e.getComponent())}return t}},{key:"enable",value:function(){this.enabled=!0}},{key:"disable",value:function(){this.enabled=!1}}]),r}(N);Fe.moduleName="mutator",Fe.mutators={};var Pe={rows:function(e,t,i,n,o){var a=document.createElement("span"),r=document.createElement("span"),s=document.createElement("span"),l=document.createElement("span"),u=document.createElement("span"),c=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(function(e){r.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|of",(function(e){l.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|rows",(function(e){c.innerHTML=e})),n?(s.innerHTML=" "+t+"-"+Math.min(t+e-1,n)+" ",u.innerHTML=" "+n+" ",a.appendChild(r),a.appendChild(s),a.appendChild(l),a.appendChild(u),a.appendChild(c)):(s.innerHTML=" 0 ",a.appendChild(r),a.appendChild(s),a.appendChild(c)),a},pages:function(e,t,i,n,o){var a=document.createElement("span"),r=document.createElement("span"),s=document.createElement("span"),l=document.createElement("span"),u=document.createElement("span"),c=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(function(e){r.innerHTML=e})),s.innerHTML=" "+i+" ",this.table.modules.localize.langBind("pagination|counter|of",(function(e){l.innerHTML=e})),u.innerHTML=" "+o+" ",this.table.modules.localize.langBind("pagination|counter|pages",(function(e){c.innerHTML=e})),a.appendChild(r),a.appendChild(s),a.appendChild(l),a.appendChild(u),a.appendChild(c),a}},ze=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).mode="local",i.progressiveLoad=!1,i.element=null,i.pageCounterElement=null,i.pageCounter=null,i.size=0,i.page=1,i.count=5,i.max=1,i.remoteRowCountEstimate=null,i.displayIndex=0,i.initialLoad=!0,i.dataChanging=!1,i.pageSizes=[],i.registerTableOption("pagination",!1),i.registerTableOption("paginationMode","local"),i.registerTableOption("paginationSize",!1),i.registerTableOption("paginationInitialPage",1),i.registerTableOption("paginationCounter",!1),i.registerTableOption("paginationCounterElement",!1),i.registerTableOption("paginationButtonCount",5),i.registerTableOption("paginationSizeSelector",!1),i.registerTableOption("paginationElement",!1),i.registerTableOption("paginationAddRow","page"),i.registerTableOption("progressiveLoad",!1),i.registerTableOption("progressiveLoadDelay",0),i.registerTableOption("progressiveLoadScrollMargin",0),i.registerTableFunction("setMaxPage",i.setMaxPage.bind(l(i))),i.registerTableFunction("setPage",i.setPage.bind(l(i))),i.registerTableFunction("setPageToRow",i.userSetPageToRow.bind(l(i))),i.registerTableFunction("setPageSize",i.userSetPageSize.bind(l(i))),i.registerTableFunction("getPageSize",i.getPageSize.bind(l(i))),i.registerTableFunction("previousPage",i.previousPage.bind(l(i))),i.registerTableFunction("nextPage",i.nextPage.bind(l(i))),i.registerTableFunction("getPage",i.getPage.bind(l(i))),i.registerTableFunction("getPageMax",i.getPageMax.bind(l(i))),i.registerComponentFunction("row","pageTo",i.setPageToRow.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){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)),"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)))}},{key:"rowAddingPosition",value:function(e,t){var i,n=this.table.rowManager,o=n.getDisplayRows();return t?o.length?i=o[0]:n.activeRows.length&&(i=n.activeRows[n.activeRows.length-1],t=!1):o.length&&(i=o[o.length-1],t=!(o.lengththis.max&&(this.page=this.max)}},{key:"reset",value:function(e){this.initialLoad||("local"==this.mode||e)&&(this.page=1)}},{key:"setMaxPage",value:function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())}},{key:"setPage",value:function(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())}},{key:"setPageToRow",value:function(e){var t=this.table.rowManager.getDisplayRows(this.displayIndex-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()}},{key:"setPageSize",value:function(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.trackChanges()}},{key:"_setPageCounter",value:function(t,i,n){var o;if(this.pageCounter)switch("remote"===this.mode&&(i=this.size,n=(this.page-1)*this.size+1,t=this.remoteRowCountEstimate),e(o=this.pageCounter.call(this,i,n,this.page,t,this.max))){case"object":if(o instanceof Node){for(;this.pageCounterElement.firstChild;)this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);this.pageCounterElement.appendChild(o)}else this.pageCounterElement.innerHTML="",null!=o&&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:",o);break;case"undefined":case"null":this.pageCounterElement.innerHTML="";break;default:this.pageCounterElement.innerHTML=o}}},{key:"_setPageButtons",value:function(){for(var e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),i=this.max-this.page+e+10&&o<=this.max&&this.pagesElement.appendChild(this._generatePageButton(o));this.footerRedraw()}},{key:"_generatePageButton",value:function(e){var t=this,i=document.createElement("button");return i.classList.add("tabulator-page"),e==this.page&&i.classList.add("active"),i.setAttribute("type","button"),i.setAttribute("role","button"),this.langBind("pagination|page_title",(function(t){i.setAttribute("aria-label",t+" "+e),i.setAttribute("title",t+" "+e)})),i.setAttribute("data-page",e),i.textContent=e,i.addEventListener("click",(function(i){t.setPage(e)})),i}},{key:"previousPage",value:function(){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())}},{key:"nextPage",value:function(){return this.page-1&&(o=o.slice(r),(i=o.indexOf(";"))>-1&&(o=o.slice(0,i)),n=o.replace(a+"=","")),!!n&&JSON.parse(n)}},Ae={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var n=new Date;n.setDate(n.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+n.toUTCString()}},Oe=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).mode="",o.id="",o.defWatcherBlock=!1,o.config={},o.readFunc=!1,o.writeFunc=!1,o.registerTableOption("persistence",!1),o.registerTableOption("persistenceID",""),o.registerTableOption("persistenceMode",!0),o.registerTableOption("persistenceReaderFunc",!1),o.registerTableOption("persistenceWriterFunc",!1),o}return o(n,[{key:"localStorageTest",value:function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}},{key:"initialize",value:function(){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:n.readers[this.table.options.persistenceReaderFunc]?this.readFunc=n.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):n.readers[this.mode]?this.readFunc=n.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:n.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=n.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):n.writers[this.mode]?this.writeFunc=n.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,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.retreiveData("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.retreiveData("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("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("layout-refreshed",this.eventSave.bind(this,"columns"))}this.registerTableFunction("getColumnLayout",this.getColumnLayout.bind(this)),this.registerTableFunction("setColumnLayout",this.setColumnLayout.bind(this))}},{key:"eventSave",value:function(e){this.config[e]&&this.save(e)}},{key:"tableBuilt",value:function(){var e,t;this.table.options;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)}},{key:"tableRedraw",value:function(e){e&&this.config.columns&&this.save("columns")}},{key:"getColumnLayout",value:function(){return this.parseColumns(this.table.columnManager.getColumns())}},{key:"setColumnLayout",value:function(e){return this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns,e)),!0}},{key:"initializeColumn",value:function(e){var t;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),(!0===this.config.columns?Object.keys(t):this.config.columns).forEach((function(e){var i=Object.getOwnPropertyDescriptor(t,e),n=t[e];i&&Object.defineProperty(t,e,{set:function(e){n=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),n}})})),this.defWatcherBlock=!1)}},{key:"load",value:function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}},{key:"retreiveData",value:function(e){return!!this.readFunc&&this.readFunc(this.id,e)}},{key:"mergeDefinition",value:function(e,t){var i=this,n=[];return(t=t||[]).forEach((function(t,o){var a,r=i._findColumn(e,t);r&&(!0===i.config.columns||null==i.config.columns?(a=Object.keys(r)).push("width"):a=i.config.columns,a.forEach((function(e){"columns"!==e&&void 0!==t[e]&&(r[e]=t[e])})),r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),n.push(r))})),e.forEach((function(e,o){i._findColumn(t,e)||(n.length>o?n.splice(o,0,e):n.push(e))})),n}},{key:"_findColumn",value:function(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}}))}},{key:"save",value:function(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"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)}},{key:"validateSorters",value:function(e){return e.forEach((function(e){e.column=e.field,delete e.field})),e}},{key:"getGroupConfig",value:function(){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}},{key:"getPageConfig",value:function(){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}},{key:"parseColumns",value:function(e){var t=this,i=[],n=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach((function(e){var o,a={},r=e.getDefinition();e.isGroup?(a.title=r.title,a.columns=t.parseColumns(e.getColumns())):(a.field=e.getField(),!0===t.config.columns||null==t.config.columns?(o=Object.keys(r)).push("width"):o=t.config.columns,o.forEach((function(t){switch(t){case"width":a.width=e.getWidth();break;case"visible":a.visible=e.visible;break;default:"function"!=typeof r[t]&&-1===n.indexOf(t)&&(a[t]=r[t])}}))),i.push(a)})),i}}]),n}(N);Oe.moduleName="persistence",Oe.moduleInitOrder=1,Oe.readers=He,Oe.writers=Ae;var _e=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).element=!1,o.manualBlock=!1,o.registerTableOption("printAsHtml",!1),o.registerTableOption("printFormatter",!1),o.registerTableOption("printHeader",!1),o.registerTableOption("printFooter",!1),o.registerTableOption("printStyled",!0),o.registerTableOption("printRowRange","visible"),o.registerTableOption("printConfig",{}),o.registerColumnOption("print"),o.registerColumnOption("titlePrint"),o}return o(n,[{key:"initialize",value:function(){this.table.options.printAsHtml&&(window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}},{key:"replaceTable",value:function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(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))}},{key:"cleanup",value:function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")}},{key:"printFullscreen",value:function(e,t,i){var n,o,a=window.scrollX,r=window.scrollY,s=document.createElement("div"),l=document.createElement("div"),u=this.table.modules.export.genereateTable(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&&(s.classList.add("tabulator-print-header"),"string"==typeof(n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?s.innerHTML=n:s.appendChild(n),this.element.appendChild(s)),this.element.appendChild(u),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,u),window.print(),this.cleanup(),window.scrollTo(a,r),this.manualBlock=!1}}]),n}(N);_e.moduleName="print";var Be=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).data=!1,o.blocked=!1,o.origFuncs={},o.currentVersion=0,o.registerTableOption("reactiveData",!1),o}return o(n,[{key:"initialize",value:function(){this.table.options.reactiveData&&(this.subscribe("cell-value-save-before",this.block.bind(this)),this.subscribe("cell-value-save-after",this.unblock.bind(this)),this.subscribe("row-data-save-before",this.block.bind(this)),this.subscribe("row-data-save-after",this.unblock.bind(this)),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)))}},{key:"watchData",value:function(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 n=Array.from(arguments);return i.blocked||t!==i.currentVersion||n.forEach((function(e){i.table.rowManager.addRowActual(e,!1)})),i.origFuncs.push.apply(e,arguments)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var n=Array.from(arguments);return i.blocked||t!==i.currentVersion||n.forEach((function(e){i.table.rowManager.addRowActual(e,!0)})),i.origFuncs.unshift.apply(e,arguments)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var n;return i.blocked||t!==i.currentVersion||i.data.length&&(n=i.table.rowManager.getRowFromDataObject(i.data[0]))&&n.deleteActual(),i.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var n;return i.blocked||t!==i.currentVersion||i.data.length&&(n=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&n.deleteActual(),i.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var n,o=Array.from(arguments),a=o[0]<0?e.length+o[0]:o[0],r=o[1],s=!!o[2]&&o.slice(2);if(!i.blocked&&t===i.currentVersion){if(s&&((n=!!e[a]&&i.table.rowManager.getRowFromDataObject(e[a]))?s.forEach((function(e){i.table.rowManager.addRowActual(e,!0,n,!0)})):(s=s.slice().reverse()).forEach((function(e){i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(a,void 0===o[1]?o[1]:a+r);l.forEach((function(e,t){var n=i.table.rowManager.getRowFromDataObject(e);n&&n.deleteActual(t!==l.length-1)}))}(s||0!==r)&&i.table.rowManager.reRenderInPosition()}return i.origFuncs.splice.apply(e,arguments)}})}},{key:"unwatchData",value:function(){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})}},{key:"watchRow",value:function(e){var t=e.getData();for(var i in this.blocked=!0,t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e),this.blocked=!1}},{key:"watchTreeChildren",value:function(e){var t=arguments,i=e.getData()[this.table.options.dataTreeChildField],n={};function o(){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}i&&(n.push=i.push,Object.defineProperty(i,"push",{enumerable:!1,configurable:!0,value:function(){var e=n.push.apply(i,t);return o(),e}}),n.unshift=i.unshift,Object.defineProperty(i,"unshift",{enumerable:!1,configurable:!0,value:function(){var e=n.unshift.apply(i,t);return o(),e}}),n.shift=i.shift,Object.defineProperty(i,"shift",{enumerable:!1,configurable:!0,value:function(){var e=n.shift.call(i);return o(),e}}),n.pop=i.pop,Object.defineProperty(i,"pop",{enumerable:!1,configurable:!0,value:function(){var e=n.pop.call(i);return o(),e}}),n.splice=i.splice,Object.defineProperty(i,"splice",{enumerable:!1,configurable:!0,value:function(){var e=n.splice.apply(i,t);return o(),e}}))}},{key:"watchKey",value:function(e,t,i){var n=this,o=Object.getOwnPropertyDescriptor(t,i),a=t[i],r=this.currentVersion;Object.defineProperty(t,i,{set:function(t){if(a=t,!n.blocked&&r===n.currentVersion){var s={};s[i]=t,e.updateData(s)}o.set&&o.set(t)},get:function(){return o.get&&o.get(),a}})}},{key:"unwatchRow",value:function(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}},{key:"block",value:function(){this.blocked=!0}},{key:"unblock",value:function(){this.blocked=!1}}]),n}(N);Be.moduleName="reactiveData";var Ne=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).startColumn=!1,o.startX=!1,o.startWidth=!1,o.handle=null,o.prevHandle=null,o.registerColumnOption("resizable",!0),o}return o(n,[{key:"initialize",value:function(){this.subscribe("cell-layout",this.layoutCellHandles.bind(this)),this.subscribe("column-init",this.layoutColumnHeader.bind(this))}},{key:"layoutCellHandles",value:function(e){"row"===e.row.type&&this.initializeColumn("cell",e.column,e.element)}},{key:"layoutColumnHeader",value:function(e){this.initializeColumn("header",e,e.element)}},{key:"initializeColumn",value:function(e,t,i){var n=this,o=!1,a=t.definition.resizable;if("header"===e&&(o="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:o}),!0===a||a==e){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var s=document.createElement("div");s.className="tabulator-col-resize-handle prev",r.addEventListener("click",(function(e){e.stopPropagation()}));var l=function(e){var i=t.getLastColumn();i&&n._checkResizability(i)&&(n.startColumn=t,n._mouseDown(e,i,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",(function(e){var i,o=t.getLastColumn();o&&n._checkResizability(o)&&(i=o.getWidth(),e.stopPropagation(),o.reinitializeWidth(!0),i!==o.getWidth()&&(n.dispatch("column-resized",o),n.table.externalEvents.dispatch("columnResized",o.getComponent())))})),s.addEventListener("click",(function(e){e.stopPropagation()}));var u=function(e){var i,o,a;(i=t.getFirstColumn())&&(a=(o=n.table.columnManager.findColumnIndex(i))>0&&n.table.columnManager.getColumnByIndex(o-1))&&n._checkResizability(a)&&(n.startColumn=t,n._mouseDown(e,a,s))};s.addEventListener("mousedown",u),s.addEventListener("touchstart",u,{passive:!0}),s.addEventListener("dblclick",(function(e){var i,o,a;(i=t.getFirstColumn())&&(a=(o=n.table.columnManager.findColumnIndex(i))>0&&n.table.columnManager.getColumnByIndex(o-1))&&n._checkResizability(a)&&(e.stopPropagation(),a.reinitializeWidth(!0))})),i.appendChild(r),i.appendChild(s)}}},{key:"_checkResizability",value:function(e){return e.definition.resizable}},{key:"_mouseDown",value:function(e,t,i){var n=this;function o(e){n.table.rtl?t.setWidth(n.startWidth-((void 0===e.screenX?e.touches[0].screenX:e.screenX)-n.startX)):t.setWidth(n.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-n.startX)),n.table.columnManager.renderer.rerenderColumns(!0),!n.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function a(e){n.startColumn.modules.edit&&(n.startColumn.modules.edit.blocked=!1),n.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",a),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",a),n.table.element.classList.remove("tabulator-block-select"),n.startWidth!==t.getWidth()&&(n.dispatch("column-resized",t),n.table.externalEvents.dispatch("columnResized",t.getComponent()))}n.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),n.startColumn.modules.edit&&(n.startColumn.modules.edit.blocked=!0),n.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,n.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",a),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",a)}}]),n}(N);Ne.moduleName="resizeColumns";var Ve=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).startColumn=!1,o.startY=!1,o.startHeight=!1,o.handle=null,o.prevHandle=null,o.registerTableOption("resizableRows",!1),o}return o(n,[{key:"initialize",value:function(){this.table.options.resizableRows&&this.subscribe("row-layout-after",this.initializeRow.bind(this))}},{key:"initializeRow",value:function(e){var t=this,i=e.getElement(),n=document.createElement("div");n.className="tabulator-row-resize-handle";var o=document.createElement("div");o.className="tabulator-row-resize-handle prev",n.addEventListener("click",(function(e){e.stopPropagation()}));var a=function(i){t.startRow=e,t._mouseDown(i,e,n)};n.addEventListener("mousedown",a),n.addEventListener("touchstart",a,{passive:!0}),o.addEventListener("click",(function(e){e.stopPropagation()}));var r=function(i){var n=t.table.rowManager.prevDisplayRow(e);n&&(t.startRow=n,t._mouseDown(i,n,o))};o.addEventListener("mousedown",r),o.addEventListener("touchstart",r,{passive:!0}),i.appendChild(n),i.appendChild(o)}},{key:"_mouseDown",value:function(e,t,i){var n=this;function o(e){t.setHeight(n.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-n.startY))}function a(e){document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",a),n.table.element.classList.remove("tabulator-block-select"),n.dispatchExternal("rowResized",t.getComponent())}n.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),n.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,n.startHeight=t.getHeight(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",a),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",a)}}]),n}(N);Ve.moduleName="resizeRows";var Ie=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).binding=!1,o.observer=!1,o.containerObserver=!1,o.tableHeight=0,o.tableWidth=0,o.containerHeight=0,o.containerWidth=0,o.autoResize=!1,o.registerTableOption("autoResize",!0),o}return o(n,[{key:"initialize",value:function(){var e=this;if(this.table.options.autoResize){var t,i=this.table;this.tableHeight=i.element.clientHeight,this.tableWidth=i.element.clientWidth,i.element.parentNode&&(this.containerHeight=i.element.parentNode.clientHeight,this.containerWidth=i.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver((function(t){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var n=Math.floor(t[0].contentRect.height),o=Math.floor(t[0].contentRect.width);e.tableHeight==n&&e.tableWidth==o||(e.tableHeight=n,e.tableWidth=o,i.element.parentNode&&(e.containerHeight=i.element.parentNode.clientHeight,e.containerWidth=i.element.parentNode.clientWidth),e.table.columnManager.renderer.rerenderColumns(!0),i.redraw())}})),this.observer.observe(i.element),t=window.getComputedStyle(i.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((function(t){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var n=Math.floor(t[0].contentRect.height),o=Math.floor(t[0].contentRect.width);e.containerHeight==n&&e.containerWidth==o||(e.containerHeight=n,e.containerWidth=o,e.tableHeight=i.element.clientHeight,e.tableWidth=i.element.clientWidth),i.columnManager.renderer.rerenderColumns(!0),i.redraw()}})),this.containerObserver.observe(this.table.element.parentNode)),this.subscribe("table-resize",this.tableResized.bind(this))):(this.binding=function(){(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell)&&(i.columnManager.renderer.rerenderColumns(!0),i.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}},{key:"tableResized",value:function(){this.table.rowManager.redraw()}},{key:"clearBindings",value:function(){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}]),n}(N);Ie.moduleName="resizeTable";var We=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).columns=[],o.hiddenColumns=[],o.mode="",o.index=0,o.collapseFormatter=[],o.collapseStartOpen=!0,o.collapseHandleColumn=!1,o.registerTableOption("responsiveLayout",!1),o.registerTableOption("responsiveLayoutCollapseStartOpen",!0),o.registerTableOption("responsiveLayoutCollapseUseFormatters",!0),o.registerTableOption("responsiveLayoutCollapseFormatter",!1),o.registerColumnOption("responsive"),o}return o(n,[{key:"initialize",value:function(){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-init",this.initializeRow.bind(this)),this.subscribe("row-layout",this.layoutRow.bind(this))))}},{key:"tableRedraw",value:function(e){-1===["fitColumns","fitDataStretch"].indexOf(this.layoutMode())&&(e||this.update())}},{key:"initializeResponsivity",value:function(){var e=this,t=[];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((function(i,n){i.modules.responsive&&i.modules.responsive.order&&i.modules.responsive.visible&&(i.modules.responsive.index=n,t.push(i),i.visible||"collapse"!==e.mode||e.hiddenColumns.push(i))})),t=(t=t.reverse()).sort((function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index})),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();var i,n=p(this.table.columnManager.columnsByIndex);try{for(n.s();!(i=n.n()).done;){var o=i.value;if("responsiveCollapse"==o.definition.formatter){this.collapseHandleColumn=o;break}}}catch(e){n.e(e)}finally{n.f()}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())}},{key:"initializeColumn",value:function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}}},{key:"initializeRow",value:function(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"))}},{key:"layoutRow",value:function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))}},{key:"updateColumnVisibility",value:function(e,t){!t&&e.modules.responsive&&(e.modules.responsive.visible=e.visible,this.initializeResponsivity())}},{key:"hideColumn",value:function(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())}},{key:"showColumn",value:function(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())}},{key:"update",value:function(){for(var e=this,t=!0;t;){var i="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),n=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-i;if(n<0){var o=e.columns[e.index];o?(e.hideColumn(o),e.index++):t=!1}else{var a=e.columns[e.index-1];a&&n>0&&n>=a.getWidth()?(e.showColumn(a),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}}},{key:"generateCollapsedContent",value:function(){var e=this;this.table.rowManager.getDisplayRows().forEach((function(t){e.generateCollapsedRowContent(t)}))}},{key:"generateCollapsedRowContent",value:function(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)}}},{key:"generateCollapsedRowData",value:function(e){var t,i=this,n=e.getData(),o=[];return this.hiddenColumns.forEach((function(a){var r=a.getFieldValue(n);if(a.definition.title&&a.field)if(a.modules.format&&i.table.options.responsiveLayoutCollapseUseFormatters){t={value:!1,data:{},getValue:function(){return r},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return a.getComponent()}},o.push({field:a.field,title:a.definition.title,value:a.modules.format.formatter.call(i.table.modules.format,t,a.modules.format.params,(function(e){e()}))})}else o.push({field:a.field,title:a.definition.title,value:r})})),o}},{key:"formatCollapsedData",value:function(e){var t=document.createElement("table");return e.forEach((function(e){var i,n=document.createElement("tr"),o=document.createElement("td"),a=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),a.appendChild(i)):a.innerHTML=e.value,n.appendChild(o),n.appendChild(a),t.appendChild(n)}),this),Object.keys(e).length?t:""}}]),n}(N);We.moduleName="responsiveLayout";var je=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).selecting=!1,i.lastClickedRow=!1,i.selectPrev=[],i.selectedRows=[],i.headerCheckboxElement=null,i.registerTableOption("selectable","highlight"),i.registerTableOption("selectableRangeMode","drag"),i.registerTableOption("selectableRollingSelection",!0),i.registerTableOption("selectablePersistence",!0),i.registerTableOption("selectableCheck",(function(e,t){return!0})),i.registerTableFunction("selectRow",i.selectRows.bind(l(i))),i.registerTableFunction("deselectRow",i.deselectRows.bind(l(i))),i.registerTableFunction("toggleSelectRow",i.toggleRow.bind(l(i))),i.registerTableFunction("getSelectedRows",i.getSelectedRows.bind(l(i))),i.registerTableFunction("getSelectedData",i.getSelectedData.bind(l(i))),i.registerComponentFunction("row","select",i.selectRows.bind(l(i))),i.registerComponentFunction("row","deselect",i.deselectRows.bind(l(i))),i.registerComponentFunction("row","toggleSelect",i.toggleRow.bind(l(i))),i.registerComponentFunction("row","isSelected",i.isRowSelected.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){!1!==this.table.options.selectable&&(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.selectable&&!this.table.options.selectablePersistence&&this.subscribe("data-refreshing",this.deselectRows.bind(this)))}},{key:"rowRetrieve",value:function(e,t){return"selected"===e?this.selectedRows:t}},{key:"rowDeleted",value:function(e){this._deselectRow(e,!0)}},{key:"clearSelectionData",value:function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],!0!==e&&this._rowSelectionChanged()}},{key:"initializeRow",value:function(e){var t=this,i=e.getElement(),n=function e(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(i.classList.add("tabulator-selectable"),i.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?i.addEventListener("click",this.handleComplexRowClick.bind(this,e)):(i.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),i.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",n),document.body.addEventListener("keyup",n),t.toggleRow(e),!1})),i.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),i.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))):(i.classList.add("tabulator-unselectable"),i.classList.remove("tabulator-selectable"))}},{key:"handleComplexRowClick",value:function(e,t){var i=this;if(t.shiftKey){this.table._clearSelection(),this.lastClickedRow=this.lastClickedRow||e;var n=this.table.rowManager.getDisplayRowIndex(this.lastClickedRow),o=this.table.rowManager.getDisplayRowIndex(e),a=n<=o?n:o,r=n>=o?n:o,s=this.table.rowManager.getDisplayRows().slice(0).splice(a,r-a+1);t.ctrlKey||t.metaKey?(s.forEach((function(t){t!==i.lastClickedRow&&(!0===i.table.options.selectable||i.isRowSelected(e)||i.selectedRows.lengththis.table.options.selectable&&(s=s.slice(0,this.table.options.selectable)),this.selectRows(s)),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)}},{key:"toggleRow",value:function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}},{key:"selectRows",value:function(t){var i,n=this;switch(e(t)){case"undefined":this.table.rowManager.rows.forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;case"string":(i=this.table.rowManager.findRow(t))?this._selectRow(i,!0,!0):this.table.rowManager.getRows(t).forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;default:Array.isArray(t)?(t.forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged()):this._selectRow(t,!1,!0)}}},{key:"_selectRow",value:function(e,t,i){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!i&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var n=this.table.rowManager.findRow(e);n?-1==this.selectedRows.indexOf(n)&&(n.getElement().classList.add("tabulator-selected"),n.modules.select||(n.modules.select={}),n.modules.select.selected=!0,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!0),this.selectedRows.push(n),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!0),this.dispatchExternal("rowSelected",n.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)}},{key:"isRowSelected",value:function(e){return-1!==this.selectedRows.indexOf(e)}},{key:"deselectRows",value:function(e,t){var i,n=this;if(void 0===e){i=n.selectedRows.length;for(var o=0;o-1&&(o.getElement().classList.remove("tabulator-selected"),o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.modules.select.checkboxEl&&(o.modules.select.checkboxEl.checked=!1),n.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(o,!1),this.dispatchExternal("rowDeselected",o.getComponent()),n._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)}},{key:"getSelectedData",value:function(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getData())})),e}},{key:"getSelectedRows",value:function(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getComponent())})),e}},{key:"_rowSelectionChanged",value:function(e){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||this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows())}},{key:"registerRowSelectCheckbox",value:function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t}},{key:"registerHeaderSelectCheckbox",value:function(e){this.headerCheckboxElement=e}},{key:"childRowSelection",value:function(e,t){var i=this.table.modules.dataTree.getChildren(e,!0);if(t){var n,o=p(i);try{for(o.s();!(n=o.n()).done;){var a=n.value;this._selectRow(a,!0)}}catch(e){o.e(e)}finally{o.f()}}else{var r,s=p(i);try{for(s.s();!(r=s.n()).done;){var l=r.value;this._deselectRow(l,!0)}}catch(e){s.e(e)}finally{s.f()}}}}]),r}(N);function Ge(e,t,i,n,o,a,r){var s=window.DateTime||luxon.DateTime,l=r.format||"dd/MM/yyyy HH:mm:ss",u=r.alignEmptyValues,c=0;if(void 0!==s){if(e="iso"===l?s.fromISO(String(e)):s.fromFormat(String(e),l),t="iso"===l?s.fromISO(String(t)):s.fromFormat(String(t),l),e.isValid){if(t.isValid)return e-t;c=1}else c=t.isValid?-1:0;return("top"===u&&"desc"===a||"bottom"===u&&"asc"===a)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on luxon.js")}je.moduleName="selectRow";var Ue={number:function(e,t,i,n,o,a,r){var s=r.alignEmptyValues,l=r.decimalSeparator,u=r.thousandSeparator,c=0;if(e=String(e),t=String(t),u&&(e=e.split(u).join(""),t=t.split(u).join("")),l&&(e=e.split(l).join("."),t=t.split(l).join(".")),e=parseFloat(e),t=parseFloat(t),isNaN(e))c=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;c=1}return("top"===s&&"desc"===a||"bottom"===s&&"asc"===a)&&(c*=-1),c},string:function(t,i,n,o,a,r,s){var l,u=s.alignEmptyValues,c=0;if(t){if(i){switch(e(s.locale)){case"boolean":s.locale&&(l=this.langLocale());break;case"string":l=s.locale}return String(t).toLowerCase().localeCompare(String(i).toLowerCase(),l)}c=1}else c=i?-1:0;return("top"===u&&"desc"===r||"bottom"===u&&"asc"===r)&&(c*=-1),c},date:function(e,t,i,n,o,a,r){return r.format||(r.format="dd/MM/yyyy"),Ge.call(this,e,t,i,n,o,a,r)},time:function(e,t,i,n,o,a,r){return r.format||(r.format="HH:mm"),Ge.call(this,e,t,i,n,o,a,r)},datetime:Ge,boolean:function(e,t,i,n,o,a,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,n,o,a,r){var s=r.type||"length",l=r.alignEmptyValues,u=0;function c(e){switch(s){case"length":return e.length;case"sum":return e.reduce((function(e,t){return e+t}));case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce((function(e,t){return e+t}))/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?c(e):0)-(t?c(t):0);l=1}else l=Array.isArray(t)?-1:0;return("top"===l&&"desc"===a||"bottom"===l&&"asc"===a)&&(u*=-1),u},exists:function(e,t,i,n,o,a,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,i,n,o,a,r){var s,l,u,c,h,d=0,m=/(\d+)|(\D+)/g,p=/\d/,f=r.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((s=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!p.test(s)||!p.test(l))return s>l?1:-1;for(s=s.match(m),l=l.match(m),h=s.length>l.length?l.length:s.length;dc?1:-1;return s.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===f&&"desc"===a||"bottom"===f&&"asc"===a)&&(g*=-1),g}},Xe=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).sortList=[],i.changed=!1,i.registerTableOption("sortMode","local"),i.registerTableOption("initialSort",!1),i.registerTableOption("columnHeaderSortMulti",!0),i.registerTableOption("sortOrderReverse",!1),i.registerTableOption("headerSortElement","
"),i.registerColumnOption("sorter"),i.registerColumnOption("sorterParams"),i.registerColumnOption("headerSort",!0),i.registerColumnOption("headerSortStartingDir"),i.registerColumnOption("headerSortTristate"),i}return o(r,[{key:"initialize",value:function(){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))}},{key:"tableBuilt",value:function(){this.table.options.initialSort&&this.setSort(this.table.options.initialSort)}},{key:"remoteSortParams",value:function(e,t,i,n){var o=this.getSort();return o.forEach((function(e){delete e.column})),n.sort=o,n}},{key:"userSetSort",value:function(e,t){this.setSort(e,t),this.refreshSort()}},{key:"clearSort",value:function(){this.clear(),this.refreshSort()}},{key:"initializeColumn",value:function(t){var i,n,o=this,a=!1;switch(e(t.definition.sorter)){case"string":r.sorters[t.definition.sorter]?a=r.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":a=t.definition.sorter}t.modules.sort={sorter:a,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:t.definition.headerSortTristate},!1!==t.definition.headerSort&&((i=t.getElement()).classList.add("tabulator-sortable"),(n=document.createElement("div")).classList.add("tabulator-col-sorter"),"object"==e(this.table.options.headerSortElement)?n.appendChild(this.table.options.headerSortElement):n.innerHTML=this.table.options.headerSortElement,t.titleHolderElement.appendChild(n),t.modules.sort.element=n,i.addEventListener("click",(function(e){var i="",n=[],a=!1;if(t.modules.sort){if(t.modules.sort.tristate)i="none"==t.modules.sort.dir?t.modules.sort.startingDir:t.modules.sort.dir==t.modules.sort.startingDir?"asc"==t.modules.sort.dir?"desc":"asc":"none";else switch(t.modules.sort.dir){case"asc":i="desc";break;case"desc":i="asc";break;default:i=t.modules.sort.startingDir}o.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?((a=(n=o.getSort()).findIndex((function(e){return e.field===t.getField()})))>-1?(n[a].dir=i,a!=n.length-1&&(a=n.splice(a,1)[0],"none"!=i&&n.push(a))):"none"!=i&&n.push({column:t,dir:i}),o.setSort(n)):"none"==i?o.clear():o.setSort(t,i),o.refreshSort()}})))}},{key:"refreshSort",value:function(){"remote"===this.table.options.sortMode?this.reloadData():this.refreshData(!0)}},{key:"hasChanged",value:function(){var e=this.changed;return this.changed=!1,e}},{key:"getSort",value:function(){var e=[];return this.sortList.forEach((function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})})),e}},{key:"setSort",value:function(e,t){var i=this,n=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach((function(e){var t;(t=i.table.columnManager.findColumn(e.column))?(e.column=t,n.push(e),i.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)})),i.sortList=n,this.dispatch("sort-changed")}},{key:"clear",value:function(){this.setSort([])}},{key:"findSorter",value:function(t){var i,n=this.table.rowManager.activeRows[0],o="string";if(n&&(n=n.getData(),t.getField()))switch(e(i=t.getFieldValue(n))){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(i)||""===i?i.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return r.sorters[o]}},{key:"sort",value:function(e){var t=this,i=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,n=[],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.modules.sort;e.column&&o&&(o.sorter||(o.sorter=t.findSorter(e.column)),e.params="function"==typeof o.params?o.params(e.column.getComponent(),e.dir):o.params,n.push(e)),t.setColumnHeader(e.column,e.dir)})),n.length&&t._sortItems(e,n)):i.forEach((function(e,i){t.setColumnHeader(e.column,e.dir)})),this.subscribedExternal("dataSorted")&&(e.forEach((function(e){o.push(e.getComponent())})),this.dispatchExternal("dataSorted",t.getSort(),o)),e}},{key:"clearColumnHeaders",value:function(){this.table.columnManager.getRealColumns().forEach((function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))}))}},{key:"setColumnHeader",value:function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)}},{key:"_sortItems",value:function(e,t){var i=this,n=t.length-1;e.sort((function(e,o){for(var a,r=n;r>=0;r--){var s=t[r];if(0!==(a=i._sortRow(e,o,s.column,s.dir,s.params)))break}return a}))}},{key:"_sortRow",value:function(e,t,i,n,o){var a,r,s="asc"==n?e:t,l="asc"==n?t:e;return e=void 0!==(e=i.getFieldValue(s.getData()))?e:"",t=void 0!==(t=i.getFieldValue(l.getData()))?t:"",a=s.getComponent(),r=l.getComponent(),i.modules.sort.sorter.call(this,e,t,a,r,i.getComponent(),n,o)}}]),r}(N);Xe.moduleName="sort",Xe.sorters=Ue;var qe={integer:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(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)},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("|")),""===t||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 n=!0,o=e.getData(),a=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(e){var i=e.getData();i!==o&&t==a.getFieldValue(i)&&(n=!1)})),n},required:function(e,t,i){return""!==t&&null!=t}},Ke=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).invalidCells=[],i.registerTableOption("validationMode","blocking"),i.registerColumnOption("validator"),i.registerTableFunction("getInvalidCells",i.getInvalidCells.bind(l(i))),i.registerTableFunction("clearCellValidation",i.userClearCellValidation.bind(l(i))),i.registerTableFunction("validate",i.userValidate.bind(l(i))),i.registerComponentFunction("cell","isValid",i.cellIsValid.bind(l(i))),i.registerComponentFunction("cell","clearValidation",i.clearValidation.bind(l(i))),i.registerComponentFunction("cell","validate",i.cellValidate.bind(l(i))),i.registerComponentFunction("column","validate",i.columnValidate.bind(l(i))),i.registerComponentFunction("row","validate",i.rowValidate.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-delete",this.clearValidation.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this))}},{key:"cellIsValid",value:function(e){return!e.modules.validate||!e.modules.validate.invalid}},{key:"cellValidate",value:function(e){return this.validate(e.column.modules.validate,e,e.getValue())}},{key:"columnValidate",value:function(e){var t=this,i=[];return e.cells.forEach((function(e){t.cellValidate(e)||i.push(e.getComponent())})),!i.length||i}},{key:"rowValidate",value:function(e){var t=this,i=[];return e.cells.forEach((function(e){t.cellValidate(e)||i.push(e.getComponent())})),!i.length||i}},{key:"userClearCellValidation",value:function(e){var t=this;e||(e=this.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach((function(e){t.clearValidation(e._getSelf())}))}},{key:"userValidate",value:function(e){var t=[];return this.table.rowManager.rows.forEach((function(e){var i=(e=e.getComponent()).validate();!0!==i&&(t=t.concat(i))})),!t.length||t}},{key:"initializeColumnCheck",value:function(e){void 0!==e.definition.validator&&this.initializeColumn(e)}},{key:"initializeColumn",value:function(e){var t,i=this,n=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach((function(e){(t=i._extractValidator(e))&&n.push(t)})):(t=this._extractValidator(e.definition.validator))&&n.push(t),e.modules.validate=!!n.length&&n)}},{key:"_extractValidator",value:function(t){var i,n,o;switch(e(t)){case"string":return(o=t.indexOf(":"))>-1?(i=t.substring(0,o),n=t.substring(o+1)):i=t,this._buildValidator(i,n);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}}},{key:"_buildValidator",value:function(e,t){var i="function"==typeof e?e:r.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)}},{key:"validate",value:function(e,t,i){var n=this,o=[],a=this.invalidCells.indexOf(t);return e&&e.forEach((function(e){e.func.call(n,t.getComponent(),i,e.params)||o.push({type:e.type,parameters:e.params})})),o=!o.length||o,t.modules.validate||(t.modules.validate={}),!0===o?(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),a>-1&&this.invalidCells.splice(a,1)):(t.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==a&&this.invalidCells.push(t)),o}},{key:"getInvalidCells",value:function(){var e=[];return this.invalidCells.forEach((function(t){e.push(t.getComponent())})),e}},{key:"clearValidation",value:function(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))}}]),r}(N);Ke.moduleName="validate",Ke.validators=qe;var Ye=Object.freeze({__proto__:null,AccessorModule:K,AjaxModule:Z,ClipboardModule:ee,ColumnCalcsModule:ne,DataTreeModule:oe,DownloadModule:re,EditModule:ue,ExportModule:de,FilterModule:pe,FormatModule:ge,FrozenColumnsModule:ve,FrozenRowsModule:be,GroupRowsModule:Ce,HistoryModule:ke,HtmlTableImportModule:Ee,ImportModule:xe,InteractionModule:Te,KeybindingsModule:Me,MenuModule:Le,MoveColumnsModule:De,MoveRowsModule:Se,MutatorModule:Fe,PageModule:ze,PersistenceModule:Oe,PrintModule:_e,ReactiveDataModule:Be,ResizeColumnsModule:Ne,ResizeRowsModule:Ve,ResizeTableModule:Ie,ResponsiveLayoutModule:We,SelectRowModule:je,SortModule:Xe,ValidateModule:Ke}),Je=function(e){a(n,e);var i=c(n);function n(){return t(this,n),i.apply(this,arguments)}return n}(q);return new X(Je,Ye),Je})); +/* Tabulator v5.2.2 (c) Oliver Folkerd 2022 */ +!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";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var i=0;ie.length)&&(t=e.length);for(var i=0,n=new Array(t);i=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,r=!0,s=!1;return{s:function(){i=e[Symbol.iterator]()},n:function(){var e=i.next();return r=e.done,e},e:function(e){s=!0,a=e},f:function(){try{r||null==i.return||i.return()}finally{if(s)throw a}}}}var g=function(){function e(i){t(this,e),this.table=i}return o(e,[{key:"reloadData",value:function(e,t){return this.table.dataLoader.load(e,void 0,void 0,void 0,t)}},{key:"langText",value:function(){var e;return(e=this.table.modules.localize).getText.apply(e,arguments)}},{key:"langBind",value:function(){var e;return(e=this.table.modules.localize).bind.apply(e,arguments)}},{key:"langLocale",value:function(){var e;return(e=this.table.modules.localize).getLocale.apply(e,arguments)}},{key:"commsConnections",value:function(){var e;return(e=this.table.modules.comms).getConnections.apply(e,arguments)}},{key:"commsSend",value:function(){var e;return(e=this.table.modules.comms).send.apply(e,arguments)}},{key:"layoutMode",value:function(){return this.table.modules.layout.getMode()}},{key:"layoutRefresh",value:function(){return this.table.modules.layout.layout()}},{key:"subscribe",value:function(){var e;return(e=this.table.eventBus).subscribe.apply(e,arguments)}},{key:"unsubscribe",value:function(){var e;return(e=this.table.eventBus).unsubscribe.apply(e,arguments)}},{key:"subscribed",value:function(e){return this.table.eventBus.subscribed(e)}},{key:"subscriptionChange",value:function(){var e;return(e=this.table.eventBus).subscriptionChange.apply(e,arguments)}},{key:"dispatch",value:function(){var e;return(e=this.table.eventBus).dispatch.apply(e,arguments)}},{key:"chain",value:function(){var e;return(e=this.table.eventBus).chain.apply(e,arguments)}},{key:"confirm",value:function(){var e;return(e=this.table.eventBus).confirm.apply(e,arguments)}},{key:"dispatchExternal",value:function(){var e;return(e=this.table.externalEvents).dispatch.apply(e,arguments)}},{key:"subscribedExternal",value:function(e){return this.table.externalEvents.subscribed(e)}},{key:"subscriptionChangeExternal",value:function(){var e;return(e=this.table.externalEvents).subscriptionChange.apply(e,arguments)}},{key:"options",value:function(e){return this.table.options[e]}},{key:"setOption",value:function(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}},{key:"module",value:function(e){return this.table.module(e)}}]),e}(),v=function(){function e(i){return t(this,e),this._column=i,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)}})}return o(e,[{key:"getElement",value:function(){return this._column.getElement()}},{key:"getDefinition",value:function(){return this._column.getDefinition()}},{key:"getField",value:function(){return this._column.getField()}},{key:"getTitleDownload",value:function(){return this._column.getTitleDownload()}},{key:"getCells",value:function(){var e=[];return this._column.cells.forEach((function(t){e.push(t.getComponent())})),e}},{key:"isVisible",value:function(){return this._column.visible}},{key:"show",value:function(){this._column.isGroup?this._column.columns.forEach((function(e){e.show()})):this._column.show()}},{key:"hide",value:function(){this._column.isGroup?this._column.columns.forEach((function(e){e.hide()})):this._column.hide()}},{key:"toggle",value:function(){this._column.visible?this.hide():this.show()}},{key:"delete",value:function(){return this._column.delete()}},{key:"getSubColumns",value:function(){var e=[];return this._column.columns.length&&this._column.columns.forEach((function(t){e.push(t.getComponent())})),e}},{key:"getParentColumn",value:function(){return this._column.parent instanceof C&&this._column.parent.getComponent()}},{key:"_getSelf",value:function(){return this._column}},{key:"scrollTo",value:function(){return this._column.table.columnManager.scrollToColumn(this._column)}},{key:"getTable",value:function(){return this._column.table}},{key:"move",value:function(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)}},{key:"getNextColumn",value:function(){var e=this._column.nextColumn();return!!e&&e.getComponent()}},{key:"getPrevColumn",value:function(){var e=this._column.prevColumn();return!!e&&e.getComponent()}},{key:"updateDefinition",value:function(e){return this._column.updateDefinition(e)}},{key:"getWidth",value:function(){return this._column.getWidth()}},{key:"setWidth",value:function(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.columnManager.renderer.rerenderColumns(!0),t}}]),e}(),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,editableTitle:void 0},y=function(){function e(i){return t(this,e),this._cell=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._cell.table.componentFunctionBinder.handle("cell",e._cell,t)}})}return o(e,[{key:"getValue",value:function(){return this._cell.getValue()}},{key:"getOldValue",value:function(){return this._cell.getOldValue()}},{key:"getInitialValue",value:function(){return this._cell.initialValue}},{key:"getElement",value:function(){return this._cell.getElement()}},{key:"getRow",value:function(){return this._cell.row.getComponent()}},{key:"getData",value:function(){return this._cell.row.getData()}},{key:"getField",value:function(){return this._cell.column.getField()}},{key:"getColumn",value:function(){return this._cell.column.getComponent()}},{key:"setValue",value:function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)}},{key:"restoreOldValue",value:function(){this._cell.setValueActual(this._cell.getOldValue())}},{key:"restoreInitialValue",value:function(){this._cell.setValueActual(this._cell.initialValue)}},{key:"checkHeight",value:function(){this._cell.checkHeight()}},{key:"getTable",value:function(){return this._cell.table}},{key:"_getSelf",value:function(){return this._cell}}]),e}(),w=function(i){a(r,i);var n=c(r);function r(e,i){var o;return t(this,r),(o=n.call(this,e.table)).table=e.table,o.column=e,o.row=i,o.element=null,o.value=null,o.initialValue,o.oldValue=null,o.modules={},o.height=null,o.width=null,o.minWidth=null,o.component=null,o.loaded=!1,o.build(),o}return o(r,[{key:"build",value:function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value}},{key:"generateElement",value:function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element}},{key:"_configureCell",value:function(){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((function(t){e.classList.add(t)}));this.dispatch("cell-init",this),this.column.visible||this.hide()}},{key:"_generateContents",value:function(){var t,i=this;switch(e(t=this.chain("cell-format",this,null,(function(){return i.element.innerHTML=i.value})))){case"object":if(t instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(t)}else this.element.innerHTML="",null!=t&&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:",t);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=t}}},{key:"cellRendered",value:function(){this.dispatch("cell-rendered",this)}},{key:"getElement",value:function(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}},{key:"getValue",value:function(){return this.value}},{key:"getOldValue",value:function(){return this.oldValue}},{key:"setValue",value:function(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()))}},{key:"setValueProcessData",value:function(e,t,i){var n=!1;return(this.value!==e||i)&&(n=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),n&&this.dispatch("cell-value-changed",this),n}},{key:"setValueActual",value:function(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()}},{key:"layoutElement",value:function(){this._generateContents(),this.dispatch("cell-layout",this)}},{key:"setWidth",value:function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled}},{key:"clearWidth",value:function(){this.width="",this.element.style.width=""}},{key:"getWidth",value:function(){return this.width||this.element.offsetWidth}},{key:"setMinWidth",value:function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled}},{key:"setMaxWidth",value:function(){this.maxWidth=this.column.maxWidth,this.element.style.maxWidth=this.column.maxWidthStyled}},{key:"checkHeight",value:function(){this.row.reinitializeHeight()}},{key:"clearHeight",value:function(){this.element.style.height="",this.height=null,this.dispatch("cell-height",this,"")}},{key:"setHeight",value:function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled,this.dispatch("cell-height",this,this.row.heightStyled)}},{key:"getHeight",value:function(){return this.height||this.element.offsetHeight}},{key:"show",value:function(){this.element.style.display=this.column.vertAlign?"inline-flex":""}},{key:"hide",value:function(){this.element.style.display="none"}},{key:"delete",value:function(){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={}}},{key:"getIndex",value:function(){return this.row.getCellIndex(this)}},{key:"getComponent",value:function(){return this.component||(this.component=new y(this)),this.component}}]),r}(g),C=function(i){a(r,i);var n=c(r);function r(e,i){var o;return t(this,r),(o=n.call(this,i.table)).definition=e,o.parent=i,o.type="column",o.columns=[],o.cells=[],o.element=o.createElement(),o.contentElement=!1,o.titleHolderElement=!1,o.titleElement=!1,o.groupElement=o.createGroupElement(),o.isGroup=!1,o.hozAlign="",o.vertAlign="",o.field="",o.fieldStructure="",o.getFieldValue="",o.setFieldValue="",o.titleDownload=null,o.titleFormatterRendered=!1,o.mapDefinitions(),o.setField(o.definition.field),o.modules={},o.width=null,o.widthStyled="",o.maxWidth=null,o.maxWidthStyled="",o.maxInitialWidth=null,o.minWidth=null,o.minWidthStyled="",o.widthFixed=!1,o.visible=!0,o.component=null,o.definition.columns?(o.isGroup=!0,o.definition.columns.forEach((function(e,t){var i=new r(e,l(o));o.attachColumn(i)})),o.checkColumnVisibility()):i.registerColumnField(l(o)),o._initialize(),o.bindModuleColumns(),o}return o(r,[{key:"createElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e}},{key:"createGroupElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e}},{key:"mapDefinitions",value:function(){var e=this.table.options.columnDefaults;if(e)for(var t in e)void 0===this.definition[t]&&(this.definition[t]=e[t]);this.definition=this.table.columnManager.optionsList.generate(r.defaultOptionList,this.definition)}},{key:"checkDefinition",value:function(){var e=this;Object.keys(this.definition).forEach((function(t){-1===r.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)}))}},{key:"setField",value:function(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}},{key:"registerColumnPosition",value:function(e){this.parent.registerColumnPosition(e)}},{key:"registerColumnField",value:function(e){this.parent.registerColumnField(e)}},{key:"reRegisterPosition",value:function(){this.isGroup?this.columns.forEach((function(e){e.reRegisterPosition()})):this.registerColumnPosition(this)}},{key:"_mapDepricatedFunctionality",value:function(){}},{key:"_initialize",value:function(){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._bindEvents(),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.dispatch("column-init",this)}},{key:"_bindEvents",value:function(){var e,t,i,n=this,o=this.definition;"function"==typeof o.headerClick&&this.element.addEventListener("click",(function(e){o.headerClick(e,n.getComponent())})),"function"==typeof o.headerDblClick&&this.element.addEventListener("dblclick",(function(e){o.headerDblClick(e,n.getComponent())})),"function"==typeof o.headerContext&&this.element.addEventListener("contextmenu",(function(e){o.headerContext(e,n.getComponent())})),"function"==typeof o.headerTap&&(i=!1,this.element.addEventListener("touchstart",(function(e){i=!0}),{passive:!0}),this.element.addEventListener("touchend",(function(e){i&&o.headerTap(e,n.getComponent()),i=!1}))),"function"==typeof o.headerDblTap&&(e=null,this.element.addEventListener("touchend",(function(t){e?(clearTimeout(e),e=null,o.headerDblTap(t,n.getComponent())):e=setTimeout((function(){clearTimeout(e),e=null}),300)}))),"function"==typeof o.headerTapHold&&(t=null,this.element.addEventListener("touchstart",(function(e){clearTimeout(t),t=setTimeout((function(){clearTimeout(t),t=null,i=!1,o.headerTapHold(e,this.getComponent())}),1e3)}),{passive:!0}),this.element.addEventListener("touchend",(function(e){clearTimeout(t),t=null})))}},{key:"_buildColumnHeader",value:function(){var e=this,t=this.definition;this.table;(this.dispatch("column-layout",this),void 0!==t.visible&&(t.visible?this.show(!0):this.hide(!0)),t.cssClass)&&t.cssClass.split(" ").forEach((function(t){e.element.classList.add(t)}));t.field&&this.element.setAttribute("tabulator-field",t.field),this.setMinWidth(parseInt(t.minWidth)),t.maxInitialWidth&&(this.maxInitialWidth=parseInt(t.maxInitialWidth)),t.maxWidth&&this.setMaxWidth(parseInt(t.maxWidth)),this.reinitializeWidth(),this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}},{key:"_buildColumnHeaderContent",value:function(){this.definition,this.table;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}},{key:"_buildColumnHeaderTitle",value:function(){var e=this,t=this.definition,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),t.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("change",(function(){t.title=n.value,e.dispatchExternal("columnTitleChanged",e.getComponent())})),i.appendChild(n),t.field?this.langBind("columns|"+t.field,(function(e){n.value=e||t.title||" "})):n.value=t.title||" "}else t.field?this.langBind("columns|"+t.field,(function(n){e._formatColumnHeaderTitle(i,n||t.title||" ")})):this._formatColumnHeaderTitle(i,t.title||" ");return i}},{key:"_formatColumnHeaderTitle",value:function(t,i){var n=this.chain("column-format",[this,i,t],null,(function(){return i}));switch(e(n)){case"object":n instanceof Node?t.appendChild(n):(t.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:",n));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=n}}},{key:"_buildGroupHeader",value:function(){var e=this;(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((function(t){e.element.classList.add(t)}));this.titleElement.style.textAlign=this.definition.headerHozAlign,this.element.appendChild(this.groupElement)}},{key:"_getFlatData",value:function(e){return e[this.field]}},{key:"_getNestedData",value:function(e){for(var t,i=e,n=this.fieldStructure,o=n.length,a=0;a-1&&this.columns.splice(t,1),this.columns.length||this.delete()}},{key:"setWidth",value:function(e){this.widthFixed=!0,this.setWidthActual(e)}},{key:"setWidthActual",value:function(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)}},{key:"checkCellHeights",value:function(){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()}))}},{key:"getWidth",value:function(){var e=0;return this.isGroup?this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})):e=this.width,e}},{key:"getHeight",value:function(){return Math.ceil(this.element.getBoundingClientRect().height)}},{key:"setMinWidth",value:function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}},{key:"setMaxWidth",value:function(e){this.maxWidth=e,this.maxWidthStyled=e?e+"px":"",this.element.style.maxWidth=this.maxWidthStyled,this.cells.forEach((function(e){e.setMaxWidth()}))}},{key:"delete",value:function(){var e=this;return new Promise((function(t,i){e.isGroup&&e.columns.forEach((function(e){e.delete()})),e.dispatch("column-delete",e);for(var n=e.cells.length,o=0;o-1&&this._nextVisibleColumn(e+1)}},{key:"_nextVisibleColumn",value:function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)}},{key:"prevColumn",value:function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)}},{key:"_prevVisibleColumn",value:function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)}},{key:"reinitializeWidth",value:function(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)}},{key:"fitToData",value:function(e){if(!this.isGroup){this.widthFixed||(this.element.style.width="",this.cells.forEach((function(e){e.clearWidth()})));var t=this.element.offsetWidth;if((!this.width||!this.widthFixed)&&(this.cells.forEach((function(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)}}}},{key:"updateDefinition",value:function(e){var t,i=this;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((function(e){return t.field==i.field&&(i.field=!1),i.delete().then((function(){return e.getComponent()}))})))}},{key:"deleteCell",value:function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}},{key:"getComponent",value:function(){return this.component||(this.component=new v(this)),this.component}}]),r}(g);C.defaultOptionList=b;var k=function(){function i(){t(this,i)}return o(i,null,[{key:"elVisible",value:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)}},{key:"elOffset",value:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}}},{key:"deepClone",value:function(t,i){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a={}.__proto__,r=[].__proto__;i||(i=Object.assign(Array.isArray(t)?[]:{},t));var s=function(){var s=t[l],u=void 0,c=void 0;null==s||"object"!==e(s)||s.__proto__!==a&&s.__proto__!==r||((u=o.findIndex((function(e){return e.subject===s})))>-1?i[l]=o[u].copy:(c=Object.assign(Array.isArray(s)?[]:{},s),o.unshift({subject:s,copy:c}),i[l]=n.deepClone(s,c,o)))};for(var l in t)s();return i}}]),i}(),E=function(){function i(e,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t(this,i),this.table=e,this.msgType=n,this.registeredDefaults=Object.assign({},o)}return o(i,[{key:"register",value:function(e,t){this.registeredDefaults[e]=t}},{key:"generate",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object.assign({},this.registeredDefaults);if(Object.assign(n,t),!1!==i.debugInvalidOptions||this.table.options.debugInvalidOptions)for(var o in i)n.hasOwnProperty(o)||console.warn("Invalid "+this.msgType+" option:",o);for(var o in n)o in i?n[o]=i[o]:Array.isArray(n[o])?n[o]=Object.assign([],n[o]):"object"===e(n[o])&&null!==n[o]?n[o]=Object.assign({},n[o]):void 0===n[o]&&delete n[o];return n}}]),i}(),R=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).elementVertical=e.rowManager.element,o.elementHorizontal=e.columnManager.element,o.tableElement=e.rowManager.tableElement,o.verticalFillMode="fit",o}return o(n,[{key:"initialize",value:function(){}},{key:"clearRows",value:function(){}},{key:"clearColumns",value:function(){}},{key:"reinitializeColumnWidths",value:function(e){}},{key:"renderRows",value:function(){}},{key:"renderColumns",value:function(){}},{key:"rerenderRows",value:function(e){e&&e()}},{key:"rerenderColumns",value:function(e,t){}},{key:"renderRowCells",value:function(e){}},{key:"rerenderRowCells",value:function(e,t){}},{key:"scrollColumns",value:function(e,t){}},{key:"scrollRows",value:function(e,t){}},{key:"resize",value:function(){}},{key:"scrollToRow",value:function(e){}},{key:"scrollToRowNearestTop",value:function(e){}},{key:"visibleRows",value:function(e){return[]}},{key:"rows",value:function(){return this.table.rowManager.getDisplayRows()}},{key:"styleRow",value:function(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"))}},{key:"clear",value:function(){this.clearRows(),this.clearColumns()}},{key:"render",value:function(){this.renderRows(),this.renderColumns()}},{key:"rerender",value:function(e){this.rerenderRows(),this.rerenderColumns()}},{key:"scrollToRowPosition",value:function(e,t,i){var n=this,o=this.rows().indexOf(e),a=e.getElement(),r=0;return new Promise((function(s,l){if(o>-1){if(void 0===i&&(i=n.table.options.scrollToRowIfVisible),!i&&k.elVisible(a)&&(r=k.elOffset(a).top-k.elOffset(n.elementVertical).top)>0&&re&&(e=i)}})),this.windowBuffer=2*e}},{key:"rerenderColumns",value:function(e,t){var i=this,n={cols:this.columns,leftCol:this.leftCol,rightCol:this.rightCol},o=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((function(e){var t={};if(e.visible){var n=e.getWidth();t.leftPos=o,t.rightPos=o+n,t.width=n,i.isFitData&&(t.fitDataCheck=!e.modules.vdomHoz||e.modules.vdomHoz.fitDataCheck),o+n>i.vDomScrollPosLeft&&othis.windowBuffer/2?this.rerenderColumns():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())}},{key:"colPositionAdjust",value:function(e,t,i){for(var n=e;n=e.columns.length-1?e.vDomPadRight=0:e.vDomPadRight-=i.getWidth())):"break"};;){if("break"===i())break}t&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}},{key:"addColLeft",value:function(){for(var e=this,t=!1,i=function(){var i=e.columns[e.leftCol-1];if(!i)return"break";if(!(i.modules.vdomHoz.rightPos>=e.vDomScrollPosLeft))return"break";t=!0,e.getVisibleRows().forEach((function(e){if("group"!==e.type){var t=e.getCell(i);e.getElement().prepend(t.getElement()),t.cellRendered()}})),e.leftCol--,e.leftCol<=0?e.vDomPadLeft=0:e.vDomPadLeft-=i.getWidth();var n=e.fitDataColActualWidthCheck(i);n&&(e.scrollLeft=e.elementVertical.scrollLeft=e.elementVertical.scrollLeft+n,e.vDomPadRight-=n)};;){if("break"===i())break}t&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}},{key:"removeColRight",value:function(){for(var e=this,t=!1,i=function(){var i=e.columns[e.rightCol];return i&&i.modules.vdomHoz.leftPos>e.vDomScrollPosRight?(t=!0,e.getVisibleRows().forEach((function(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)}}})),e.vDomPadRight+=i.getWidth(),void e.rightCol--):"break"};;){if("break"===i())break}t&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}},{key:"removeColLeft",value:function(){for(var e=this,t=!1,i=function(){var i=e.columns[e.leftCol];return i&&i.modules.vdomHoz.rightPosi?(t=e-i,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.renderer.scrollColumns(e)}},{key:"generateColumnsFromRowData",value:function(t){var i,n,o=[],a=this.table.options.autoColumnsDefinitions;if(t&&t.length){for(var r in i=t[0]){var s={field:r,title:r},l=i[r];switch(e(l)){case"undefined":n="string";break;case"boolean":n="boolean";break;case"object":n=Array.isArray(l)?"array":"string";break;default:n=isNaN(l)||""===l?l.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=n,o.push(s)}if(a)switch(e(a)){case"function":this.table.options.columns=a.call(this.table,o);break;case"object":Array.isArray(a)?o.forEach((function(e){var t=a.find((function(t){return t.field===e.field}));t&&Object.assign(e,t)})):o.forEach((function(e){a[e.field]&&Object.assign(e,a[e.field])})),this.table.options.columns=o}else this.table.options.columns=o;this.setColumns(this.table.options.columns)}}},{key:"setColumns",value:function(e,t){for(var i=this;this.headersElement.firstChild;)this.headersElement.removeChild(this.headersElement.firstChild);this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.dispatch("columns-loading"),e.forEach((function(e,t){i._addColumn(e)})),this._reIndexColumns(),this.dispatch("columns-loaded"),this.renderer.rerenderColumns(!1,!0),this.redraw(!0)}},{key:"_addColumn",value:function(e,t,i){var n=new C(e,this),o=n.getElement(),a=i?this.findColumnIndex(i):i;if(i&&a>-1){var r=i.getTopColumn(),s=this.columns.indexOf(r),l=r.getElement();t?(this.columns.splice(s,0,n),l.parentNode.insertBefore(o,l)):(this.columns.splice(s+1,0,n),l.parentNode.insertBefore(o,l.nextSibling))}else t?(this.columns.unshift(n),this.headersElement.insertBefore(n.getElement(),this.headersElement.firstChild)):(this.columns.push(n),this.headersElement.appendChild(n.getElement()));return n.columnRendered(),n}},{key:"registerColumnField",value:function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)}},{key:"registerColumnPosition",value:function(e){this.columnsByIndex.push(e)}},{key:"_reIndexColumns",value:function(){this.columnsByIndex=[],this.columns.forEach((function(e){e.reRegisterPosition()}))}},{key:"verticalAlignHeaders",value:function(){var e=this,t=0;this.columns.forEach((function(e){var i;e.clearVerticalAlign(),(i=e.getHeight())>t&&(t=i)})),this.columns.forEach((function(i){i.verticalAlign(e.table.options.columnHeaderVertAlign,t)})),this.table.rowManager.adjustTableSize()}},{key:"findColumn",value:function(t){return"object"!=e(t)?this.columnsByField[t]||!1:t instanceof C?t:t instanceof v?t._getSelf()||!1:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&this.columns.find((function(e){return e.element===t}))||!1}},{key:"getColumnByField",value:function(e){return this.columnsByField[e]}},{key:"getColumnsByFieldRoot",value:function(e){var t=this,i=[];return Object.keys(this.columnsByField).forEach((function(n){n.split(".")[0]===e&&i.push(t.columnsByField[n])})),i}},{key:"getColumnByIndex",value:function(e){return this.columnsByIndex[e]}},{key:"getFirstVisibleColumn",value:function(e){return(e=this.columnsByIndex.findIndex((function(e){return e.visible})))>-1&&this.columnsByIndex[e]}},{key:"getColumns",value:function(){return this.columns}},{key:"findColumnIndex",value:function(e){return this.columnsByIndex.findIndex((function(t){return e===t}))}},{key:"getRealColumns",value:function(){return this.columnsByIndex}},{key:"traverse",value:function(e){this.columnsByIndex.forEach((function(t,i){e(t,i)}))}},{key:"getDefinitions",value:function(e){var t=[];return this.columnsByIndex.forEach((function(i){(!e||e&&i.visible)&&t.push(i.getDefinition())})),t}},{key:"getDefinitionTree",value:function(){var e=[];return this.columns.forEach((function(t){e.push(t.getDefinition(!0))})),e}},{key:"getComponents",value:function(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach((function(e){t.push(e.getComponent())})),t}},{key:"getWidth",value:function(){var e=0;return this.columnsByIndex.forEach((function(t){t.visible&&(e+=t.getWidth())})),e}},{key:"moveColumn",value:function(e,t,i){this.moveColumnActual(e,t,i),t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),this.verticalAlignHeaders(),this.table.rowManager.reinitialize()}},{key:"moveColumnActual",value:function(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.renderer.rerenderColumns(!0),this.dispatch("column-moved",e,t,i),this.subscribedExternal("columnMoved")&&this.dispatchExternal("columnMoved",e.getComponent(),this.table.columnManager.getComponents())}},{key:"_moveColumnInArray",value:function(e,t,i,n,o){var a,r=e.indexOf(t);r>-1&&(e.splice(r,1),(a=e.indexOf(i))>-1?n&&(a+=1):a=r,e.splice(a,0,t),o&&(this.chain("column-moving-rows",[t,i,n],null,[])||[]).concat(this.table.rowManager.rows).forEach((function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(a,0,t)}})))}},{key:"scrollToColumn",value:function(e,t,i){var n=this,o=0,a=0,r=0,s=e.getElement();return new Promise((function(l,u){if(void 0===t&&(t=n.table.options.scrollToColumnPosition),void 0===i&&(i=n.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":r=-n.element.clientWidth/2;break;case"right":r=s.clientWidth-n.headersElement.clientWidth}if(!i&&(a=s.offsetLeft)>0&&a+s.offsetWidththis.table.rowManager.element.clientHeight&&(e-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(i){var n,o,a;i.visible&&(n=i.definition.width||0,o=parseInt(i.minWidth),a="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,t+=a>o?a:o)})),t}},{key:"addColumn",value:function(e,t,i){var n=this;return new Promise((function(o,a){var r=n._addColumn(e,t,i);n._reIndexColumns(),n.dispatch("column-add",e,t,i),"fitColumns"!=n.layoutMode()&&r.reinitializeWidth(),n.redraw(!0),n.table.rowManager.reinitialize(),n.renderer.rerenderColumns(),o(r)}))}},{key:"deregisterColumn",value:function(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()}},{key:"redraw",value:function(e){k.elVisible(this.element)&&this.verticalAlignHeaders(),e&&(this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}]),r}(g),L=function(){function e(i){return t(this,e),this._row=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}return o(e,[{key:"getData",value:function(e){return this._row.getData(e)}},{key:"getElement",value:function(){return this._row.getElement()}},{key:"getCells",value:function(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}},{key:"getCell",value:function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}},{key:"getIndex",value:function(){return this._row.getData("data")[this._row.table.options.index]}},{key:"getPosition",value:function(e){return this._row.table.rowManager.getRowPosition(this._row,e)}},{key:"delete",value:function(){return this._row.delete()}},{key:"scrollTo",value:function(){return this._row.table.rowManager.scrollToRow(this._row)}},{key:"move",value:function(e,t){this._row.moveToRow(e,t)}},{key:"update",value:function(e){return this._row.updateData(e)}},{key:"normalizeHeight",value:function(){this._row.normalizeHeight(!0)}},{key:"_getSelf",value:function(){return this._row}},{key:"reformat",value:function(){return this._row.reinitialize()}},{key:"getTable",value:function(){return this._row.table}},{key:"getNextRow",value:function(){var e=this._row.nextRow();return e?e.getComponent():e}},{key:"getPrevRow",value:function(){var e=this._row.prevRow();return e?e.getComponent():e}}]),e}(),D=function(e){a(n,e);var i=c(n);function n(e,o){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";return t(this,n),(a=i.call(this,o.table)).parent=o,a.data={},a.type=r,a.element=!1,a.modules={},a.cells=[],a.height=0,a.heightStyled="",a.manualHeight=!1,a.outerHeight=0,a.initialized=!1,a.heightInitialized=!1,a.component=null,a.created=!1,a.setData(e),a}return o(n,[{key:"create",value:function(){this.created||(this.created=!0,this.generateElement())}},{key:"createElement",value:function(){var e=document.createElement("div");e.classList.add("tabulator-row"),e.setAttribute("role","row"),this.element=e}},{key:"getElement",value:function(){return this.create(),this.element}},{key:"detachElement",value:function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}},{key:"generateElement",value:function(){this.createElement(),this.dispatch("row-init",this)}},{key:"generateCells",value:function(){this.cells=this.table.columnManager.generateCells(this)}},{key:"initialize",value:function(e){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),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)}},{key:"reinitializeHeight",value:function(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}},{key:"deinitialize",value:function(){this.initialized=!1}},{key:"deinitializeHeight",value:function(){this.heightInitialized=!1}},{key:"reinitialize",value:function(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)}},{key:"calcHeight",value:function(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}},{key:"setCellHeight",value:function(){this.cells.forEach((function(e){e.setHeight()})),this.heightInitialized=!0}},{key:"clearCellHeight",value:function(){this.cells.forEach((function(e){e.clearHeight()}))}},{key:"normalizeHeight",value:function(e){e&&!this.table.options.rowHeight&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()}},{key:"setHeight",value:function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)}},{key:"getHeight",value:function(){return this.outerHeight}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"deleteCell",value:function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}},{key:"setData",value:function(e){this.data=this.chain("row-data-init-before",[this,e],void 0,e),this.dispatch("row-data-init-after",this)}},{key:"updateData",value:function(e){var t,i=this,n=this.element&&k.elVisible(this.element),o={};return new Promise((function(a,r){for(var s in"string"==typeof e&&(e=JSON.parse(e)),i.dispatch("row-data-save-before",i),i.subscribed("row-data-changing")&&(o=Object.assign(o,i.data),o=Object.assign(o,e)),t=i.chain("row-data-changing",[i,o,e],null,e))i.data[s]=t[s];for(var s in i.dispatch("row-data-save-after",i),e){i.table.columnManager.getColumnsByFieldRoot(s).forEach((function(e){var o=i.getCell(e.getField());if(o){var a=e.getFieldValue(t);o.getValue()!=a&&(o.setValueProcessData(a),n&&o.cellRendered())}}))}n?(i.normalizeHeight(!0),i.table.options.rowFormatter&&i.table.options.rowFormatter(i.getComponent())):(i.initialized=!1,i.height=0,i.heightStyled=""),i.dispatch("row-data-changed",i,n,e),i.dispatchExternal("rowUpdated",i.getComponent()),i.subscribedExternal("dataChanged")&&i.dispatchExternal("dataChanged",i.table.rowManager.getData()),a()}))}},{key:"getData",value:function(e){return e?this.chain("row-data-retrieve",[this,e],null,this.data):this.data}},{key:"getCell",value:function(e){return e=this.table.columnManager.findColumn(e),this.initialized||this.generateCells(),this.cells.find((function(t){return t.column===e}))}},{key:"getCellIndex",value:function(e){return this.cells.findIndex((function(t){return t===e}))}},{key:"findCell",value:function(e){return this.cells.find((function(t){return t.element===e}))}},{key:"getCells",value:function(){return this.initialized||this.generateCells(),this.cells}},{key:"nextRow",value:function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1}},{key:"prevRow",value:function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1}},{key:"moveToRow",value:function(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)}},{key:"delete",value:function(){return this.dispatch("row-delete",this),this.deleteActual(),Promise.resolve()}},{key:"deleteActual",value:function(e){this.table.rowManager.getRowIndex(this);this.detatchModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}},{key:"detatchModules",value:function(){this.dispatch("row-deleting",this)}},{key:"deleteCells",value:function(){for(var e=this.cells.length,t=0;tMath.abs(this.elementVertical.scrollTop+this.elementVertical.clientHeight-t))}},{key:"scrollToRow",value:function(e){var t=e.getElement();this.elementVertical.scrollTop=k.elOffset(t).top-k.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}},{key:"visibleRows",value:function(e){return this.rows()}}]),n}(R),P=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).verticalFillMode="fill",o.scrollTop=0,o.scrollLeft=0,o.vDomRowHeight=20,o.vDomTop=0,o.vDomBottom=0,o.vDomScrollPosTop=0,o.vDomScrollPosBottom=0,o.vDomTopPad=0,o.vDomBottomPad=0,o.vDomMaxRenderChain=90,o.vDomWindowBuffer=0,o.vDomWindowMinTotalRows=20,o.vDomWindowMinMarginRows=5,o.vDomTopNewRows=[],o.vDomBottomNewRows=[],o}return o(n,[{key:"clearRows",value:function(){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}},{key:"renderRows",value:function(){this._virtualRenderFill()}},{key:"rerenderRows",value:function(e){for(var t=this.elementVertical.scrollTop,i=!1,n=!1,o=this.table.rowManager.scrollLeft,a=this.rows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(a[r]){var s=t-a[r].getElement().offsetTop;if(!(!1===n||Math.abs(s)o||n>o){var r=this.table.rowManager.scrollLeft;this._virtualRenderFill(Math.floor(this.elementVertical.scrollTop/this.elementVertical.scrollHeight*a.length)),this.scrollColumns(r)}else t?(i<0&&this._addTopRow(a,-i),n<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(a,-n):this.vDomScrollPosBottom=this.scrollTop)):(n>=0&&this._addBottomRow(a,n),i>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(a,i):this.vDomScrollPosTop=this.scrollTop))}},{key:"resize",value:function(){this.vDomWindowBuffer=this.table.options.renderVerticalBuffer||this.elementVertical.clientHeight}},{key:"scrollToRowNearestTop",value:function(e){var t=this.rows().indexOf(e);return!(Math.abs(this.vDomTop-t)>Math.abs(this.vDomBottom-t))}},{key:"scrollToRow",value:function(e){var t=this.rows().indexOf(e);t>-1&&this._virtualRenderFill(t,!0)}},{key:"visibleRows",value:function(e){var t=this.elementVertical.scrollTop,i=this.elementVertical.clientHeight+t,n=!1,o=0,a=0,r=this.rows();if(e)o=this.vDomTop,a=this.vDomBottom;else for(var s=this.vDomTop;s<=this.vDomBottom;s++)if(r[s])if(n){if(!(i-r[s].getElement().offsetTop>=0))break;a=s}else if(t-r[s].getElement().offsetTop>=0)o=s;else{if(n=!0,!(i-r[s].getElement().offsetTop>=0))break;a=s}return r.slice(o,a+1)}},{key:"_virtualRenderFill",value:function(e,t,i){var n=this.tableElement,o=this.elementVertical,a=0,r=0,s=0,l=0,u=0,c=this.rows(),h=c.length,d=this.elementVertical.clientHeight;if(i=i||0,e=e||0){for(;n.firstChild;)n.removeChild(n.firstChild);(s=(h-e+1)*this.vDomRowHeight)this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*m),this.vDomBottom++,u++}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+i:this.scrollTop-l,this.vDomBottomPad=this.vDomBottom==h-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-r-l,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((r+l)/u),this.vDomBottomPad=this.vDomRowHeight*(h-this.vDomBottom-1),this.vDomScrollHeight=l+r+this.vDomBottomPad-d),n.style.paddingTop=this.vDomTopPad+"px",n.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+l+i-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-d:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-d),this.elementVertical.scrollWidth>this.elementVertical.offsetWidth&&t&&(this.scrollTop+=this.elementVertical.offsetHeight-d),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,o.scrollTop=this.scrollTop,this.dispatch("render-virtual-fill")}}},{key:"_addTopRow",value:function(e,t){for(var i=this.tableElement,n=[],o=0,a=this.vDomTop-1,r=0;this.vDomTop;){var s=e[a],l=void 0,u=void 0;if(!(s&&r=l))break;this.styleRow(s,a),i.insertBefore(s.getElement(),i.firstChild),s.initialized&&s.heightInitialized||n.push(s),s.initialize(),u||(l=s.getElement().offsetHeight)>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l),t-=l,o+=l,this.vDomTop--,a--,r++}for(var c=0,h=n;c=(r=a.getHeight()||this.vDomRowHeight)))break;this.vDomTop++,t-=r,n+=r,i.push(a),o++}for(var s=0,l=i;s=l))break;this.styleRow(s,a),i.appendChild(s.getElement()),s.initialized&&s.heightInitialized||n.push(s),s.initialize(),u||(l=s.getElement().offsetHeight)>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l),t-=l,o+=l,this.vDomBottom++,a++,r++}for(var c=0,h=n;c=(r=a.getHeight()||this.vDomRowHeight)))break;this.vDomBottom--,t-=r,n+=r,i.push(a),o++}for(var s=0,l=i;st,n=e.element.scrollTop,o=e.scrollTop>n;e.scrollLeft!=t&&(e.scrollLeft=t,e.dispatch("scroll-horizontal",t,i),e.dispatchExternal("scrollHorizontal",t,i),e._positionPlaceholder()),e.scrollTop!=n&&(e.scrollTop=n,e.renderer.scrollRows(n,o),e.dispatch("scroll-vertical",n,o),e.dispatchExternal("scrollVertical",n,o))}))}},{key:"findRow",value:function(t){var i=this;return"object"!=e(t)?null!=t&&(this.rows.find((function(e){return e.data[i.table.options.index]==t}))||!1):t instanceof D?t:t instanceof L?t._getSelf()||!1:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&this.rows.find((function(e){return e.getElement()===t}))||!1}},{key:"getRowFromDataObject",value:function(e){return this.rows.find((function(t){return t.data===e}))||!1}},{key:"getRowFromPosition",value:function(e,t){return t?this.activeRows[e]:this.rows[e]}},{key:"scrollToRow",value:function(e,t,i){return this.renderer.scrollToRowPosition(e,t,i)}},{key:"setData",value:function(e,t,i){var n=this;return new Promise((function(o,a){t&&n.getDisplayRows().length?n.table.options.pagination?n._setDataActual(e,!0):n.reRenderInPosition((function(){n._setDataActual(e)})):(n.table.options.autoColumns&&i&&n.table.initialized&&n.table.columnManager.generateColumnsFromRowData(e),n.resetScroll(),n._setDataActual(e)),o()}))}},{key:"_setDataActual",value:function(t,i){var n=this;this.dispatchExternal("dataProcessing",t),this._wipeElements(),Array.isArray(t)?(this.dispatch("data-processing",t),t.forEach((function(t,i){if(t&&"object"===e(t)){var o=new D(t,n);n.rows.push(o)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)})),this.refreshActiveData(!1,!1,i),this.dispatch("data-processed",t),this.dispatchExternal("dataProcessed",t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",e(t),"\nData: ",t)}},{key:"_wipeElements",value:function(){this.dispatch("rows-wipe"),this.rows.forEach((function(e){e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.adjustTableSize()}},{key:"deleteRow",value:function(e,t){var i=this.rows.indexOf(e),n=this.activeRows.indexOf(e);n>-1&&this.activeRows.splice(n,1),i>-1&&this.rows.splice(i,1),this.setActiveRows(this.activeRows),this.displayRowIterator((function(t){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this._showPlaceholder(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}},{key:"addRow",value:function(e,t,i,n){return this.addRowActual(e,t,i,n)}},{key:"addRows",value:function(e,t,i){var n=this,o=[];return new Promise((function(a,r){t=n.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length,(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach((function(a,r){var s=n.addRow(a,t,i,!0);o.push(s),n.dispatch("row-added",s,e,t,i)})),n.refreshActiveData(!1,!1,!0),n.regenerateRowNumbers(),o.length&&n._clearPlaceholder(),a(o)}))}},{key:"findAddRowPos",value:function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e}},{key:"addRowActual",value:function(e,t,i,n){var o,a,r=e instanceof D?e:new D(e||{},this),s=this.findAddRowPos(t),l=-1;return i||(a=this.chain("row-adding-position",[r,s],null,{index:i,top:s}),i=a.index,s=a.top),void 0!==i&&(i=this.findRow(i)),(i=this.chain("row-adding-index",[r,i,s],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(s?t:t+1,0,r)})),o>-1&&this.activeRows.splice(s?o:o+1,0,r),this.rows.splice(s?l:l+1,0,r)):s?(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()),n||this.reRenderInPosition(),r}},{key:"moveRow",value:function(e,t,i){this.dispatch("row-move",e,t,i),this.moveRowActual(e,t,i),this.regenerateRowNumbers(),this.dispatch("row-moved",e,t,i),this.dispatchExternal("rowMoved",e.getComponent())}},{key:"moveRowActual",value:function(e,t,i){var n=this;this.moveRowInArray(this.rows,e,t,i),this.moveRowInArray(this.activeRows,e,t,i),this.displayRowIterator((function(o){n.moveRowInArray(o,e,t,i)})),this.dispatch("row-moving",e,t,i)}},{key:"moveRowInArray",value:function(e,t,i,n){var o,a,r;if(t!==i&&((o=e.indexOf(t))>-1&&(e.splice(o,1),(a=e.indexOf(i))>-1?n?e.splice(a+1,0,t):e.splice(a,0,t):e.splice(o,0,t)),e===this.getDisplayRows())){r=a>o?a:o+1;for(var s=o-1&&t}},{key:"nextDisplayRow",value:function(e,t){var i=this.getDisplayRowIndex(e),n=!1;return!1!==i&&i-1)&&i}},{key:"getData",value:function(e,t){var i=[];return this.getRows(e).forEach((function(e){"row"==e.type&&i.push(e.getData(t||"data"))})),i}},{key:"getComponents",value:function(e){var t=[];return this.getRows(e).forEach((function(e){t.push(e.getComponent())})),t}},{key:"getDataCount",value:function(e){return this.getRows(e).length}},{key:"scrollHorizontal",value:function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.dispatch("scroll-horizontal",e)}},{key:"registerDataPipelineHandler",value:function(e,t){void 0!==t?(this.dataPipeline.push({handler:e,priority:t}),this.dataPipeline.sort((function(e,t){return e.priority-t.priority}))):console.error("Data pipeline handlers must have a priority in order to be registered")}},{key:"registerDisplayPipelineHandler",value:function(e,t){void 0!==t?(this.displayPipeline.push({handler:e,priority:t}),this.displayPipeline.sort((function(e,t){return e.priority-t.priority}))):console.error("Display pipeline handlers must have a priority in order to be registered")}},{key:"refreshActiveData",value:function(e,t,i){var n=this.table,o="",a=0,r=["all","dataPipeline","display","displayPipeline","end"];if("function"==typeof e)if((a=this.dataPipeline.findIndex((function(t){return t.handler===e})))>-1)o="dataPipeline",t&&(a==this.dataPipeline.length-1?o="display":a++);else{if(!((a=this.displayPipeline.findIndex((function(t){return t.handler===e})))>-1))return void console.error("Unable to refresh data, invalid handler provided",e);o="displayPipeline",t&&(a==this.displayPipeline.length-1?o="end":a++)}else o=e||"all",a=0;this.redrawBlock?(!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===o&&a-1&&(n.splice(o,1),a=!0),"mouseenter"!==t&&"mouseleave"!==t||this.pseudoTracking||this.bindPseudoEvents(),a&&this.updateEventListeners()}},{key:"updateEventListeners",value:function(){for(var e in this.listeners){var 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)}}},{key:"track",value:function(e,t){var i=t.composedPath&&t.composedPath()||t.path,n=this.findTargets(i);n=this.bindComponents(e,n),this.triggerEvents(e,t,n),!this.pseudoTracking||"mouseover"!=e&&"mouseleave"!=e||Object.keys(n).length||this.pseudoMouseLeave("none",t)}},{key:"findTargets",value:function(e){var t,i=this,n={},o=Object.keys(this.componentMap),a=f(e);try{for(a.s();!(t=a.n()).done;){var r=t.value,s=r.classList?d(r.classList):[];if(s.filter((function(e){return i.abortClasses.includes(e)})).length)break;var l,u=f(s.filter((function(e){return o.includes(e)})));try{for(u.s();!(l=u.n()).done;){var c=l.value;n[this.componentMap[c]]=r}}catch(e){u.e(e)}finally{u.f()}}}catch(e){a.e(e)}finally{a.f()}return n.group&&n.group===n.row&&delete n.row,n}},{key:"bindComponents",value:function(e,t){var i,n=this,o=Object.keys(t).reverse(),a=this.listeners[e],r={},s=f(o);try{var l=function(){var e=i.value,o=void 0,s=t[e],l=n.previousTargets[e];if(l&&l.target===s)o=l.component;else switch(e){case"row":case"group":if(a.components.includes("row")||a.components.includes("cell")||a.components.includes("group"))o=n.table.rowManager.getVisibleRows(!0).find((function(e){return e.getElement()===s})),t.row&&t.row.parentNode&&t.row.parentNode.closest(".tabulator-row")&&(t[e]=!1);break;case"column":a.components.includes("column")&&(o=n.table.columnManager.findColumn(s));break;case"cell":a.components.includes("cell")&&(t.row instanceof D?o=t.row.findCell(s):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?"))}o&&(t[e]=o,r[e]={target:s,component:o})};for(s.s();!(i=s.n()).done;)l()}catch(e){s.e(e)}finally{s.f()}return this.previousTargets=r,t}},{key:"triggerEvents",value:function(e,t,i){var n=this.listeners[e];for(var o in i)i[o]&&n.components.includes(o)&&this.dispatch(o+"-"+e,t,i[o])}},{key:"clearWatchers",value:function(){for(var e in this.listeners){var t=this.listeners[e];t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}}]),n}(g),_=function(){function e(i){t(this,e),this.table=i,this.bindings={}}return o(e,[{key:"bind",value:function(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}},{key:"handle",value:function(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("_")||console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}]),e}(),O=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).requestOrder=0,i.loading=!1,i}return o(r,[{key:"initialize",value:function(){}},{key:"load",value:function(t,i,n,o,a){var r=this,s=++this.requestOrder;return this.dispatchExternal("dataLoading",t),!t||0!=t.indexOf("{")&&0!=t.indexOf("[")||(t=JSON.parse(t)),this.confirm("data-loading",[t,i,n,a])?(this.loading=!0,a||this.alertLoader(),i=this.chain("data-params",[t,n,a],i||{},i||{}),i=this.mapParams(i,this.table.options.dataSendParams),this.chain("data-load",[t,i,n,a],!1,Promise.resolve([])).then((function(t){Array.isArray(t)||"object"!=e(t)||(t=r.mapParams(t,r.objectInvert(r.table.options.dataReceiveParams)));var i=r.chain("data-loaded",t,null,t);s==r.requestOrder?(r.clearAlert(),!1!==i&&(r.dispatchExternal("dataLoaded",i),r.table.rowManager.setData(i,o,!o))):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((function(e){console.error("Data Load Error: ",e),r.dispatchExternal("dataLoadError",e),a||r.alertError(),setTimeout((function(){r.clearAlert()}),r.table.options.dataLoaderErrorTimeout)})).finally((function(){r.loading=!1}))):(this.dispatchExternal("dataLoaded",t),t||(t=[]),this.table.rowManager.setData(t,o,!o),Promise.resolve())}},{key:"mapParams",value:function(e,t){var i={};for(var n in e)i[t.hasOwnProperty(n)?t[n]:n]=e[n];return i}},{key:"objectInvert",value:function(e){var t={};for(var i in e)t[e[i]]=i;return t}},{key:"blockActiveLoad",value:function(){this.requestOrder++}},{key:"alertLoader",value:function(){("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"))}},{key:"alertError",value:function(){this.table.alertManager.alert(this.table.options.dataLoaderError||this.langText("data|error"),"error")}},{key:"clearAlert",value:function(){this.table.alertManager.clear()}}]),r}(g),A=function(){function e(i,n,o){t(this,e),this.table=i,this.events={},this.optionsList=n||{},this.subscriptionNotifiers={},this.dispatch=o?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=o}return o(e,[{key:"subscriptionChange",value:function(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}},{key:"subscribe",value:function(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifiySubscriptionChange(e,!0)}},{key:"unsubscribe",value:function(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((function(e){return 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._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}},{key:"subscribed",value:function(e){return this.events[e]&&this.events[e].length}},{key:"_notifiySubscriptionChange",value:function(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((function(e){e(t)}))}},{key:"_dispatch",value:function(){var e,t=this,i=Array.from(arguments),n=i.shift();return this.events[n]&&this.events[n].forEach((function(n,o){var a=n.apply(t.table,i);o||(e=a)})),e}},{key:"_debugDispatch",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="ExternalEvent:"+t[0],!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,d(t));return this._dispatch.apply(this,arguments)}}]),e}(),B=function(){function e(i){t(this,e),this.events={},this.subscriptionNotifiers={},this.dispatch=i?this._debugDispatch.bind(this):this._dispatch.bind(this),this.chain=i?this._debugChain.bind(this):this._chain.bind(this),this.confirm=i?this._debugConfirm.bind(this):this._confirm.bind(this),this.debug=i}return o(e,[{key:"subscriptionChange",value:function(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}},{key:"subscribe",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e4;this.events[e]||(this.events[e]=[]),this.events[e].push({callback:t,priority:i}),this.events[e].sort((function(e,t){return e.priority-t.priority})),this._notifiySubscriptionChange(e,!0)}},{key:"unsubscribe",value:function(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((function(e){return e.callback===t})))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}this._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}},{key:"subscribed",value:function(e){return this.events[e]&&this.events[e].length}},{key:"_chain",value:function(e,t,i,n){var o=this,a=i;return Array.isArray(t)||(t=[t]),this.subscribed(e)?(this.events[e].forEach((function(e,i){a=e.callback.apply(o,t.concat([a]))})),a):"function"==typeof n?n():n}},{key:"_confirm",value:function(e,t){var i=this,n=!1;return Array.isArray(t)||(t=[t]),this.subscribed(e)&&this.events[e].forEach((function(e,o){e.callback.apply(i,t)&&(n=!0)})),n}},{key:"_notifiySubscriptionChange",value:function(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((function(e){e(t)}))}},{key:"_dispatch",value:function(){var e=this,t=Array.from(arguments),i=t.shift();this.events[i]&&this.events[i].forEach((function(i){i.callback.apply(e,t)}))}},{key:"_debugDispatch",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,d(t));return this._dispatch.apply(this,arguments)}},{key:"_debugChain",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,d(t));return this._chain.apply(this,arguments)}},{key:"_debugConfirm",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,d(t));return this._confirm.apply(this,arguments)}}]),e}(),I=function(){function e(){t(this,e)}return o(e,null,[{key:"register",value:function(t){e.tables.push(t)}},{key:"deregister",value:function(t){var i=e.tables.indexOf(t);i>-1&&e.tables.splice(i,1)}},{key:"lookupTable",value:function(t,i){var n,o,a=[];if("string"==typeof t){if((n=document.querySelectorAll(t)).length)for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:this.table.element;return e===t||!!t.parentNode&&this._checkContainerIsParent(e,t.parentNode)}},{key:"renderCallback",value:function(e){this.renderedCallback=e}},{key:"containerEventCoords",value:function(e){var t=!(e instanceof MouseEvent),i=t?e.touches[0].pageX:e.pageX,n=t?e.touches[0].pageY:e.pageY;if(this.container!==document.body){var o=k.elOffset(this.container);i-=o.left,n-=o.top}return{x:i,y:n}}},{key:"elementPositionCoords",value:function(e){var t,i,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"right",a=k.elOffset(e);switch(this.container!==document.body&&(t=k.elOffset(this.container),a.left-=t.left,a.top-=t.top),o){case"right":i=a.left+e.offsetWidth,n=a.top-1;break;case"bottom":i=a.left,n=a.top+e.offsetHeight}return{x:i,y:n,offset:a}}},{key:"show",value:function(e,t){var i,n,o,a,r;return e instanceof HTMLElement?(o=e,a=(r=this.elementPositionCoords(e,t)).offset,i=r.x,n=r.y):"number"==typeof e?(a={top:0,left:0},i=e,n=t):(i=(r=this.containerEventCoords(e)).x,n=r.y,this.reversedX=!1),this.element.style.top=n+"px",this.element.style.left=i+"px",this.container.appendChild(this.element),"function"==typeof this.renderedCallback&&this.renderedCallback(),this._fitToScreen(i,n,o,a,t),this.visible=!0,this}},{key:"_fitToScreen",value:function(e,t,i,n,o){var a=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-n.left+"px":this.container.offsetWidth-e+"px",this.reversedX=!0),t+this.element.offsetHeight>Math.max(this.container.offsetHeight,a?this.container.scrollHeight:0))if(i)switch(o){case"bottom":this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight-i.offsetHeight-1+"px";break;default: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"}},{key:"isVisible",value:function(){return this.visible}},{key:"hideOnBlur",value:function(e){var t=this;return this.blurable=!0,this.visible&&(setTimeout((function(){t.table.rowManager.element.addEventListener("scroll",t.blurEvent),t.subscribe("cell-editing",t.blurEvent),document.body.addEventListener("click",t.blurEvent),document.body.addEventListener("contextmenu",t.blurEvent),window.addEventListener("resize",t.blurEvent),document.body.addEventListener("keydown",t.escEvent)}),100),this.blurCallback=e),this}},{key:"_escapeCheck",value:function(e){27==e.keyCode&&this.hide()}},{key:"hide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.visible&&(this.blurable&&(document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent),this.unsubscribe("cell-editing",this.blurEvent)),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}},{key:"child",value:function(e){return this.childPopup&&this.childPopup.hide(),this.childPopup=new n(this.table,e,this),this.childPopup}}]),n}(g),V=function(e){a(n,e);var i=c(n);function n(e,o){var a;return t(this,n),(a=i.call(this,e))._handler=null,a}return o(n,[{key:"initialize",value:function(){}},{key:"registerTableOption",value:function(e,t){this.table.optionsList.register(e,t)}},{key:"registerColumnOption",value:function(e,t){this.table.columnManager.optionsList.register(e,t)}},{key:"registerTableFunction",value:function(e,t){var i=this;void 0===this.table[e]?this.table[e]=function(){return i.table.initGuard(e),t.apply(void 0,arguments)}:console.warn("Unable to bind table function, name already in use",e)}},{key:"registerComponentFunction",value:function(e,t,i){return this.table.componentFunctionBinder.bind(e,t,i)}},{key:"registerDataHandler",value:function(e,t){this.table.rowManager.registerDataPipelineHandler(e,t),this._handler=e}},{key:"registerDisplayHandler",value:function(e,t){this.table.rowManager.registerDisplayPipelineHandler(e,t),this._handler=e}},{key:"refreshData",value:function(e,t){t||(t=this._handler),t&&this.table.rowManager.refreshActiveData(t,!1,e)}},{key:"footerAppend",value:function(e){return this.table.footerManager.append(e)}},{key:"footerPrepend",value:function(e){return this.table.footerManager.prepend(e)}},{key:"footerRemove",value:function(e){return this.table.footerManager.remove(e)}},{key:"popup",value:function(e,t){return new N(this.table,e,t)}},{key:"alert",value:function(e,t){return this.table.alertManager.alert(e,t)}},{key:"clearAlert",value:function(){return this.table.alertManager.clear()}}]),n}(g);function W(e){e.forEach((function(e){e.reinitializeWidth()})),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()}var j={fitData:function(e){this.table.columnManager.renderer.reinitializeColumnWidths(e),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:W,fitDataTable:W,fitDataStretch:function(e){var t=this,i=0,n=this.table.rowManager.element.clientWidth,o=0,a=!1;e.forEach((function(e,n){e.widthFixed||e.reinitializeWidth(),(t.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(a=e),e.visible&&(i+=e.getWidth())})),a?(o=n-i+a.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(a.setWidth(0),this.table.modules.responsiveLayout.update()),o>0?a.setWidth(o):a.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,i,n=this.table.element.clientWidth,o=0,a=0,r=0,s=[],l=[],u=0,c=0;function h(e){return"string"==typeof e?e.indexOf("%")>-1?n/100*parseInt(e):parseInt(e):e}function d(e,t,i,n){var o=[],a=0,s=0,l=0,u=r,c=0,m=0,p=[];function f(e){return i*(e.column.definition.widthGrow||1)}function g(e){return h(e.width)-i*(e.column.definition.widthShrink||0)}return e.forEach((function(e,a){var r=n?g(e):f(e);e.column.minWidth>=r?o.push(e):e.column.maxWidth&&e.column.maxWidththis.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach((function(e){var t,i,n;e.visible&&(t=e.definition.width,i=parseInt(e.minWidth),t?(n=h(t),o+=n>i?n:i,e.definition.widthShrink&&(l.push({column:e,width:n>i?n:i}),u+=e.definition.widthShrink)):(s.push({column:e,width:0}),r+=e.definition.widthGrow||1))})),a=n-o,t=Math.floor(a/r),c=d(s,a,t,!1),s.length&&c>0&&(s[s.length-1].width+=+c),s.forEach((function(e){a-=e.width})),(i=Math.abs(c)+a)>0&&u&&(c=d(l,i,Math.floor(i/u),!0)),l.length&&(l[l.length-1].width-=c),s.forEach((function(e){e.column.setWidth(e.width)})),l.forEach((function(e){e.column.setWidth(e.width)}))}},G=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e,"layout")).mode=null,o.registerTableOption("layout","fitData"),o.registerTableOption("layoutColumnsOnNewData",!1),o.registerColumnOption("widthGrow"),o.registerColumnOption("widthShrink"),o}return o(n,[{key:"initialize",value:function(){var e=this.table.options.layout;n.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)}},{key:"getMode",value:function(){return this.mode}},{key:"layout",value:function(){this.dispatch("layout-refreshing"),n.modes[this.mode].call(this,this.table.columnManager.columnsByIndex),this.dispatch("layout-refreshed")}}]),n}(V);G.moduleName="layout",G.modes=j;var U=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).locale="default",i.lang=!1,i.bindings={},i.langList={},i.registerTableOption("locale",!1),i.registerTableOption("langs",{}),i}return o(r,[{key:"initialize",value:function(){for(var e in this.langList=k.deepClone(r.langs),!1!==this.table.options.columnDefaults.headerFilterPlaceholder&&this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder),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))}},{key:"setHeaderFilterPlaceholder",value:function(e){this.langList.default.headerFilters.default=e}},{key:"setHeaderFilterColumnPlaceholder",value:function(e,t){this.langList.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)}},{key:"installLang",value:function(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t}},{key:"_setLangProp",value:function(t,i){for(var n in i)t[n]&&"object"==e(t[n])?this._setLangProp(t[n],i[n]):t[n]=i[n]}},{key:"setLocale",value:function(t){if(!0===(t=t||"default")&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!this.langList[t]){var i=t.split("-")[0];this.langList[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",t,i),t=i):(console.warn("Localization Error - Matching locale not found, using default: ",t),t="default")}this.locale=t,this.lang=k.deepClone(this.langList.default||{}),"default"!=t&&function t(i,n){for(var o in i)"object"==e(i[o])?(n[o]||(n[o]={}),t(i[o],n[o])):n[o]=i[o]}(this.langList[t],this.lang),this.dispatchExternal("localized",this.locale,this.lang),this._executeBindings()}},{key:"getLocale",value:function(e){return this.locale}},{key:"getLang",value:function(e){return e?this.langList[e]:this.lang}},{key:"getText",value:function(e,t){var i=(e=t?e+"|"+t:e).split("|");return this._getLangElement(i,this.locale)||""}},{key:"_getLangElement",value:function(e,t){var i=this.lang;return e.forEach((function(e){var t;i&&(t=i[e],i=void 0!==t&&t)})),i}},{key:"bind",value:function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)}},{key:"_executeBindings",value:function(){var e=this,t=function(t){e.bindings[t].forEach((function(i){i(e.getText(t),e.lang)}))};for(var i in this.bindings)t(i)}}]),r}(V);U.moduleName="localize",U.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:{}}}};var X=function(e){a(n,e);var i=c(n);function n(e){return t(this,n),i.call(this,e)}return o(n,[{key:"initialize",value:function(){this.registerTableFunction("tableComms",this.receive.bind(this))}},{key:"getConnections",value:function(e){var t=this,i=[];return I.lookupTable(e).forEach((function(e){t.table!==e&&i.push(e)})),i}},{key:"send",value:function(e,t,i,n){var o=this,a=this.getConnections(e);a.forEach((function(e){e.tableComms(o.table.element,t,i,n)})),!a.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)}},{key:"receive",value:function(e,t,i,n){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,i,n);console.warn("Inter-table Comms Error - no such module:",t)}}]),n}(V);X.moduleName="comms";var q=Object.freeze({__proto__:null,LayoutModule:G,LocalizeModule:U,CommsModule:X}),K=function(){function i(e,n){t(this,i),this.bindStaticFuctionality(e),this.bindModules(e,q,!0),n&&this.bindModules(e,n)}return o(i,[{key:"bindStaticFuctionality",value:function(t){t.moduleBindings={},t.extendModule=function(i,n,o){if(t.moduleBindings[i]){var a=t.moduleBindings[i][n];if(a)if("object"==e(o))for(var r in o)a[r]=o[r];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",n)}else console.warn("Module Error - module does not exist:",i)},t.registerModule=function(e){Array.isArray(e)||(e=[e]),e.forEach((function(e){t.registerModuleBinding(e)}))},t.registerModuleBinding=function(e){t.moduleBindings[e.moduleName]=e},t.findTable=function(e){var t=I.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},t.prototype.bindModules=function(){var e=[],i=[],n=[];for(var o in this.modules={},t.moduleBindings){var a=t.moduleBindings[o],r=new a(this);this.modules[o]=r,a.prototype.moduleCore?this.modulesCore.push(r):a.moduleInitOrder?a.moduleInitOrder<0?e.push(r):i.push(r):n.push(r)}e.sort((function(e,t){return e.moduleInitOrder>t.moduleInitOrder?1:-1})),i.sort((function(e,t){return e.moduleInitOrder>t.moduleInitOrder?1:-1})),this.modulesRegular=e.concat(n.concat(i))}}},{key:"bindModules",value:function(e,t,i){var n=Object.values(t);i&&n.forEach((function(e){e.prototype.moduleCore=!0})),e.registerModule(n)}}]),i}(),J=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).element=o._createAlertElement(),o.msgElement=o._createMsgElement(),o.type=null,o.element.appendChild(o.msgElement),o}return o(n,[{key:"_createAlertElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-alert"),e}},{key:"_createMsgElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-alert-msg"),e.setAttribute("role","alert"),e}},{key:"_typeClass",value:function(){return"tabulator-alert-state-"+this.type}},{key:"alert",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"msg";if(e){for(this.clear(),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)}}},{key:"clear",value:function(){this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.msgElement.classList.remove(this._typeClass())}}]),n}(g),Y=function(){function i(e,n){var o=this;t(this,i),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 _(this),this.dataLoader=!1,this.modules={},this.modulesCore=[],this.modulesRegular=[],this.optionsList=new E(this,"table constructor"),this.initialized=!1,this.initializeElement(e)&&(this.initializeCoreSystems(n),setTimeout((function(){o._create()}))),I.register(this)}return o(i,[{key:"initializeElement",value:function(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)}},{key:"initializeCoreSystems",value:function(e){this.columnManager=new M(this),this.rowManager=new F(this),this.footerManager=new z(this),this.dataLoader=new O(this),this.alertManager=new J(this),this.bindModules(),this.options=this.optionsList.generate(i.defaultOptions,e),this._clearObjectPointers(),this._mapDeprecatedFunctionality(),this.externalEvents=new A(this,this.options,this.options.debugEventsExternal),this.eventBus=new B(this.options.debugEventsInternal),this.interactionMonitor=new H(this),this.dataLoader.initialize(),this.footerManager.initialize()}},{key:"_mapDeprecatedFunctionality",value:function(){}},{key:"_clearSelection",value:function(){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")}},{key:"_create",value:function(){this.externalEvents.dispatch("tableBuilding"),this.eventBus.dispatch("table-building"),this._rtlCheck(),this._buildElement(),this._initializeTable(),this._loadInitialData(),this.initialized=!0,this.externalEvents.dispatch("tableBuilt")}},{key:"_rtlCheck",value:function(){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}}},{key:"_clearObjectPointers",value:function(){this.options.columns=this.options.columns.slice(0),Array.isArray(this.options.data)&&!this.options.reactiveData&&(this.options.data=this.options.data.slice(0))}},{key:"_buildElement",value:function(){var t,i=this.element,n=this.options;if("TABLE"===i.tagName){this.originalElement=this.element,t=document.createElement("div");var o=i.attributes;for(var a in o)"object"==e(o[a])&&t.setAttribute(o[a].name,o[a].value);i.parentNode.replaceChild(t,i),this.element=i=t}for(i.classList.add("tabulator"),i.setAttribute("role","grid");i.firstChild;)i.removeChild(i.firstChild);n.height&&(n.height=isNaN(n.height)?n.height:n.height+"px",i.style.height=n.height),!1!==n.minHeight&&(n.minHeight=isNaN(n.minHeight)?n.minHeight:n.minHeight+"px",i.style.minHeight=n.minHeight),!1!==n.maxHeight&&(n.maxHeight=isNaN(n.maxHeight)?n.maxHeight:n.maxHeight+"px",i.style.maxHeight=n.maxHeight)}},{key:"_initializeTable",value:function(){var e=this.element,t=this.options;this.interactionMonitor.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modulesCore.forEach((function(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((function(e){e.initialize()})),this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built")}},{key:"_loadInitialData",value:function(){this.dataLoader.load(this.options.data)}},{key:"destroy",value:function(){var e=this.element;for(I.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.rows.forEach((function(e){e.wipe()})),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[];e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")}},{key:"_detectBrowser",value:function(){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):(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))}},{key:"initGuard",value:function(e,t){var i,n;return this.options.debugInitialization&&!this.initialized&&(e||(e=" "==(n="Error"==(i=(new Error).stack.split("\n"))[0]?i[2]:i[1])[0]?n.trim().split(" ")[1].split(".")[1]:n.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}},{key:"blockRedraw",value:function(){return this.initGuard(),this.rowManager.blockRedraw()}},{key:"restoreRedraw",value:function(){return this.initGuard(),this.rowManager.restoreRedraw()}},{key:"setData",value:function(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)}},{key:"clearData",value:function(){this.initGuard(),this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}},{key:"getData",value:function(e){return this.rowManager.getData(e)}},{key:"getDataCount",value:function(e){return this.rowManager.getDataCount(e)}},{key:"replaceData",value:function(e,t,i){return this.initGuard(),this.dataLoader.load(e,t,i,!0,!0)}},{key:"updateData",value:function(e){var t=this,i=0;return this.initGuard(),new Promise((function(n,o){t.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((function(e){var o=t.rowManager.findRow(e[t.options.index]);o&&(i++,o.updateData(e).then((function(){--i||n()})))})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}},{key:"addData",value:function(e,t,i){var n=this;return this.initGuard(),new Promise((function(o,a){n.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?n.rowManager.addRows(e,t,i).then((function(e){var t=[];e.forEach((function(e){t.push(e.getComponent())})),o(t)})):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))}))}},{key:"updateOrAddData",value:function(e){var t=this,i=[],n=0;return this.initGuard(),new Promise((function(o,a){t.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((function(e){var a=t.rowManager.findRow(e[t.options.index]);n++,a?a.updateData(e).then((function(){n--,i.push(a.getComponent()),n||o(i)})):t.rowManager.addRows(e).then((function(e){n--,i.push(e[0].getComponent()),n||o(i)}))})):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))}))}},{key:"getRow",value:function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}},{key:"getRowFromPosition",value:function(e,t){var i=this.rowManager.getRowFromPosition(e,t);return i?i.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}},{key:"deleteRow",value:function(e){var t=this,i=[];this.initGuard(),Array.isArray(e)||(e=[e]);var n,o=f(e);try{for(o.s();!(n=o.n()).done;){var a=n.value,r=this.rowManager.findRow(a,!0);if(!r)return console.error("Delete Error - No matching row found:",a),Promise.reject("Delete Error - No matching row found");i.push(r)}}catch(e){o.e(e)}finally{o.f()}return i.sort((function(e,i){return t.rowManager.rows.indexOf(e)>t.rowManager.rows.indexOf(i)?1:-1})),i.forEach((function(e){e.delete()})),this.rowManager.reRenderInPosition(),Promise.resolve()}},{key:"addRow",value:function(e,t,i){return this.initGuard(),"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i).then((function(e){return e[0].getComponent()}))}},{key:"updateOrAddRow",value:function(e,t){var i=this.rowManager.findRow(e);return this.initGuard(),"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((function(){return i.getComponent()})):this.rowManager.addRows(t).then((function(e){return e[0].getComponent()}))}},{key:"updateRow",value:function(e,t){var i=this.rowManager.findRow(e);return this.initGuard(),"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((function(){return Promise.resolve(i.getComponent())})):(console.warn("Update Error - No matching row found:",e),Promise.reject("Update Error - No matching row found"))}},{key:"scrollToRow",value:function(e,t,i){var n=this.rowManager.findRow(e);return n?this.rowManager.scrollToRow(n,t,i):(console.warn("Scroll Error - No matching row found:",e),Promise.reject("Scroll Error - No matching row found"))}},{key:"moveRow",value:function(e,t,i){var n=this.rowManager.findRow(e);this.initGuard(),n?n.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}},{key:"getRows",value:function(e){return this.rowManager.getComponents(e)}},{key:"getRowPosition",value:function(e,t){var i=this.rowManager.findRow(e);return i?this.rowManager.getRowPosition(i,t):(console.warn("Position Error - No matching row found:",e),!1)}},{key:"setColumns",value:function(e){this.initGuard(!1,"To set initial columns please use the 'columns' property in the table constructor"),this.columnManager.setColumns(e)}},{key:"getColumns",value:function(e){return this.columnManager.getComponents(e)}},{key:"getColumn",value:function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)}},{key:"getColumnDefinitions",value:function(){return this.columnManager.getDefinitionTree()}},{key:"showColumn",value:function(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()}},{key:"hideColumn",value:function(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()}},{key:"toggleColumn",value:function(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()}},{key:"addColumn",value:function(e,t,i){var n=this.columnManager.findColumn(i);return this.initGuard(),this.columnManager.addColumn(e,t,n).then((function(e){return e.getComponent()}))}},{key:"deleteColumn",value:function(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())}},{key:"updateColumnDefinition",value:function(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())}},{key:"moveColumn",value:function(e,t,i){var n=this.columnManager.findColumn(e),o=this.columnManager.findColumn(t);this.initGuard(),n?o?this.columnManager.moveColumn(n,o,i):console.warn("Move Error - No matching column found:",o):console.warn("Move Error - No matching column found:",e)}},{key:"scrollToColumn",value:function(e,t,i){var n=this;return new Promise((function(o,a){var r=n.columnManager.findColumn(e);return r?n.columnManager.scrollToColumn(r,t,i):(console.warn("Scroll Error - No matching column found:",e),Promise.reject("Scroll Error - No matching column found"))}))}},{key:"redraw",value:function(e){this.initGuard(),this.columnManager.redraw(e),this.rowManager.redraw(e)}},{key:"setHeight",value:function(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw()}},{key:"on",value:function(e,t){this.externalEvents.subscribe(e,t)}},{key:"off",value:function(e,t){this.externalEvents.unsubscribe(e,t)}},{key:"dispatchEvent",value:function(){var e,t=Array.from(arguments);t.shift();(e=this.externalEvents).dispatch.apply(e,arguments)}},{key:"alert",value:function(e,t){this.initGuard(),this.alertManager.alert(e,t)}},{key:"clearAlert",value:function(){this.initGuard(),this.alertManager.clear()}},{key:"modExists",value:function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)}},{key:"module",value:function(e){var t=this.modules[e];return t||console.error("Tabulator module not installed: "+e),t}}]),i}();Y.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,debugInitialization:!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 K(Y);var $=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).allowedTypes=["","data","download","clipboard","print","htmlOutput"],i.registerColumnOption("accessor"),i.registerColumnOption("accessorParams"),i.registerColumnOption("accessorData"),i.registerColumnOption("accessorDataParams"),i.registerColumnOption("accessorDownload"),i.registerColumnOption("accessorDownloadParams"),i.registerColumnOption("accessorClipboard"),i.registerColumnOption("accessorClipboardParams"),i.registerColumnOption("accessorPrint"),i.registerColumnOption("accessorPrintParams"),i.registerColumnOption("accessorHtmlOutput"),i.registerColumnOption("accessorHtmlOutputParams"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-retrieve",this.transformRow.bind(this))}},{key:"initializeColumn",value:function(e){var t=this,i=!1,n={};this.allowedTypes.forEach((function(o){var a,r="accessor"+(o.charAt(0).toUpperCase()+o.slice(1));e.definition[r]&&(a=t.lookupAccessor(e.definition[r]))&&(i=!0,n[r]={accessor:a,params:e.definition[r+"Params"]||{}})})),i&&(e.modules.accessor=n)}},{key:"lookupAccessor",value:function(t){var i=!1;switch(e(t)){case"string":r.accessors[t]?i=r.accessors[t]:console.warn("Accessor Error - No such accessor found, ignoring: ",t);break;case"function":i=t}return i}},{key:"transformRow",value:function(e,t){var i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),n=e.getComponent(),o=k.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var a,r,s,l;e.modules.accessor&&(r=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(a=e.getFieldValue(o))&&(l=e.getComponent(),s="function"==typeof r.params?r.params(a,o,t,l,n):r.params,e.setFieldValue(o,r.accessor(a,o,t,s,l,n)))})),o}}]),r}(V);$.moduleName="accessor",$.accessors={};function Z(t,i){var n=[];if(i=i||"",Array.isArray(t))t.forEach((function(e,t){n=n.concat(Z(e,i?i+"["+t+"]":t))}));else if("object"===e(t))for(var o in t)n=n.concat(Z(t[o],i?i+"["+o+"]":o));else n.push({key:i,value:t});return n}function Q(e){var t=Z(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}function ee(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+Q(i))),e}function te(t,i){var n=[];if(i=i||"",Array.isArray(t))t.forEach((function(e,t){n=n.concat(te(e,i?i+"["+t+"]":t))}));else if("object"===e(t))for(var o in t)n=n.concat(te(t[o],i?i+"["+o+"]":o));else n.push({key:i,value:t});return n}var ie={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var n=te(i),o=new FormData;return n.forEach((function(e){o.append(e.key,e.value)})),o}}},ne=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).config={},o.url="",o.urlGenerator=!1,o.params=!1,o.loaderPromise=!1,o.registerTableOption("ajaxURL",!1),o.registerTableOption("ajaxURLGenerator",!1),o.registerTableOption("ajaxParams",{}),o.registerTableOption("ajaxConfig","get"),o.registerTableOption("ajaxContentType","form"),o.registerTableOption("ajaxRequestFunc",!1),o.registerTableOption("ajaxRequesting",(function(){})),o.registerTableOption("ajaxResponse",!1),o.contentTypeFormatters=n.contentTypeFormatters,o}return o(n,[{key:"initialize",value:function(){this.loaderPromise=this.table.options.ajaxRequestFunc||n.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||n.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))}},{key:"requestParams",value:function(e,t,i,n){var o=this.table.options.ajaxParams;return o&&("function"==typeof o&&(o=o.call(this.table)),n=Object.assign(n,o)),n}},{key:"requestDataCheck",value:function(e,t,i,n){return!((e||!this.url)&&"string"!=typeof e)}},{key:"requestData",value:function(e,t,i,n,o){var a;return!o&&this.requestDataCheck(e)?(e&&this.setUrl(e),a=this.generateConfig(i),this.sendRequest(this.url,t,a)):o}},{key:"setDefaultConfig",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config=Object.assign({},n.defaultConfig),"string"==typeof e?this.config.method=e:Object.assign(this.config,e)}},{key:"generateConfig",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign({},this.config);return"string"==typeof e?t.method=e:Object.assign(t,e),t}},{key:"setUrl",value:function(e){this.url=e}},{key:"getUrl",value:function(){return this.url}},{key:"sendRequest",value:function(e,t,i){var n=this;return!1!==this.table.options.ajaxRequesting.call(this.table,e,t)?this.loaderPromise(e,i,t).then((function(i){return n.table.options.ajaxResponse&&(i=n.table.options.ajaxResponse.call(n.table,e,t,i)),i})):Promise.reject()}}]),n}(V);ne.moduleName="ajax",ne.defaultConfig={method:"GET"},ne.defaultURLGenerator=ee,ne.defaultLoaderPromise=function(t,i,n){var o,a=this;return new Promise((function(r,s){if(t=a.urlGenerator.call(a.table,t,i,n),"GET"!=i.method.toUpperCase())if(o="object"===e(a.table.options.ajaxContentType)?a.table.options.ajaxContentType:a.contentTypeFormatters[a.table.options.ajaxContentType]){for(var l in o.headers)i.headers||(i.headers={}),void 0===i.headers[l]&&(i.headers[l]=o.headers[l]);i.body=o.body.call(a,t,i,n)}else console.warn("Ajax Error - Invalid ajaxContentType value:",a.table.options.ajaxContentType);t?(void 0===i.headers&&(i.headers={}),void 0===i.headers.Accept&&(i.headers.Accept="application/json"),void 0===i.headers["X-Requested-With"]&&(i.headers["X-Requested-With"]="XMLHttpRequest"),void 0===i.mode&&(i.mode="cors"),"cors"==i.mode?(void 0===i.headers.Origin&&(i.headers.Origin=window.location.origin),void 0===i.credentials&&(i.credentials="same-origin")):void 0===i.credentials&&(i.credentials="include"),fetch(t,i).then((function(e){e.ok?e.json().then((function(e){r(e)})).catch((function(e){s(e),console.warn("Ajax Load Error - Invalid JSON returned",e)})):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),s(e))})).catch((function(e){console.error("Ajax Load Error - Connection Error: ",e),s(e)}))):(console.warn("Ajax Load Error - No URL Set"),r([]))}))},ne.contentTypeFormatters=ie;var oe=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).mode=!0,i.pasteParser=function(){},i.pasteAction=function(){},i.customSelection=!1,i.rowRange=!1,i.blocked=!0,i.registerTableOption("clipboard",!1),i.registerTableOption("clipboardCopyStyled",!0),i.registerTableOption("clipboardCopyConfig",!1),i.registerTableOption("clipboardCopyFormatter",!1),i.registerTableOption("clipboardCopyRowRange","active"),i.registerTableOption("clipboardPasteParser","table"),i.registerTableOption("clipboardPasteAction","insert"),i.registerColumnOption("clipboard"),i.registerColumnOption("titleClipboard"),i}return o(r,[{key:"initialize",value:function(){var e=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(function(t){var i,n;if(!e.blocked){if(t.preventDefault(),e.customSelection)i=e.customSelection,e.table.options.clipboardCopyFormatter&&(i=e.table.options.clipboardCopyFormatter("plain",i));else{var o=e.table.modules.export.generateExportList(e.table.options.clipboardCopyConfig,e.table.options.clipboardCopyStyled,e.rowRange,"clipboard");i=(n=e.table.modules.export.genereateHTMLTable(o))?e.generatePlainContent(o):"",e.table.options.clipboardCopyFormatter&&(i=e.table.options.clipboardCopyFormatter("plain",i),n=e.table.options.clipboardCopyFormatter("html",n))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",i):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",i),n&&t.clipboardData.setData("text/html",n)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",i),n&&t.originalEvent.clipboardData.setData("text/html",n)),e.dispatchExternal("clipboardCopied",i,n),e.reset()}})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(function(t){e.paste(t)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction),this.registerTableFunction("copyToClipboard",this.copy.bind(this))}},{key:"reset",value:function(){this.blocked=!0,this.customSelection=!1}},{key:"generatePlainContent",value:function(t){var i=[];return t.forEach((function(t){var n=[];t.columns.forEach((function(i){var o="";if(i)if("group"===t.type&&(i.value=i.component.getKey()),null===i.value)o="";else switch(e(i.value)){case"object":o=JSON.stringify(i.value);break;case"undefined":o="";break;default:o=i.value}n.push(o)})),i.push(n.join("\t"))})),i.join("\n")}},{key:"copy",value:function(e,t){var i,n;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&&((n=document.body.createTextRange()).moveToElementText(this.table.element),n.select()),document.execCommand("copy"),i&&i.removeAllRanges())}},{key:"setPasteAction",value:function(t){switch(e(t)){case"string":this.pasteAction=r.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}}},{key:"setPasteParser",value:function(t){switch(e(t)){case"string":this.pasteParser=r.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}}},{key:"paste",value:function(e){var t,i,n;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(i=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(i=this.mutateData(i)),n=this.pasteAction.call(this,i),this.dispatchExternal("clipboardPasted",t,i,n)):this.dispatchExternal("clipboardPasteError",t))}},{key:"mutateData",value:function(e){var t=this,i=[];return Array.isArray(e)?e.forEach((function(e){i.push(t.table.modules.mutator.transformRow(e,"clipboard"))})):i=e,i}},{key:"checkPaseOrigin",value:function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t}},{key:"getPasteData",value:function(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}}]),r}(V);oe.moduleName="clipboard",oe.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)}},oe.pasteParsers={table:function(e){var t=[],i=!0,n=this.table.columnManager.columns,o=[],a=[];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=n.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=n.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)})),a.push(t)})),a)}};var ae=function(){function e(i){return t(this,e),this._row=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}return o(e,[{key:"getData",value:function(e){return this._row.getData(e)}},{key:"getElement",value:function(){return this._row.getElement()}},{key:"getTable",value:function(){return this._row.table}},{key:"getCells",value:function(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}},{key:"getCell",value:function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}},{key:"_getSelf",value:function(){return this._row}}]),e}(),re={avg:function(e,t,i){var n=0,o=void 0!==i.precision?i.precision:2;return e.length&&(n=e.reduce((function(e,t){return Number(e)+Number(t)})),n/=e.length,n=!1!==o?n.toFixed(o):n),parseFloat(n).toString()},max:function(e,t,i){var n=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))>n||null===n)&&(n=e)})),null!==n?!1!==o?n.toFixed(o):n:""},min:function(e,t,i){var n=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))"),i.dataTreeExpandElement?"string"==typeof i.dataTreeExpandElement?((t=document.createElement("div")).innerHTML=i.dataTreeExpandElement,this.expandEl=t.firstChild):this.expandEl=i.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
"),e(i.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return i.dataTreeStartExpanded};break;case"function":this.startOpen=i.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return i.dataTreeStartExpanded[t]}}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.registerDisplayHandler(this.getRows.bind(this),30)}}},{key:"initializeElementField",value:function(){var e=this.table.columnManager.getFirstVisibleColumn();this.elementField=this.table.options.dataTreeElementColumn||!!e&&e.field}},{key:"getRowChildren",value:function(e){return this.getTreeChildren(e,!0)}},{key:"columnMoving",value:function(){var e=this,t=[];return this.table.rowManager.rows.forEach((function(i){t=t.concat(e.getTreeChildren(i,!1,!0))})),t}},{key:"rowDataChanged",value:function(e,t,i){this.redrawNeeded(i)&&(this.initializeRow(e),t&&(this.layoutRow(e),this.refreshData(!0)))}},{key:"cellValueChanged",value:function(e){e.column.getField()===this.elementField&&this.layoutRow(e.row)}},{key:"initializeRow",value:function(t){var i=t.getData()[this.field],n=Array.isArray(i),o=n||!n&&"object"===e(i)&&null!==i;!o&&t.modules.dataTree&&t.modules.dataTree.branchEl&&t.modules.dataTree.branchEl.parentNode.removeChild(t.modules.dataTree.branchEl),!o&&t.modules.dataTree&&t.modules.dataTree.controlEl&&t.modules.dataTree.controlEl.parentNode.removeChild(t.modules.dataTree.controlEl),t.modules.dataTree={index:t.modules.dataTree?t.modules.dataTree.index:0,open:!!o&&(t.modules.dataTree?t.modules.dataTree.open:this.startOpen(t.getComponent(),0)),controlEl:!(!t.modules.dataTree||!o)&&t.modules.dataTree.controlEl,branchEl:!(!t.modules.dataTree||!o)&&t.modules.dataTree.branchEl,parent:!!t.modules.dataTree&&t.modules.dataTree.parent,children:o}}},{key:"reinitializeRowChildren",value:function(e){this.getTreeChildren(e,!1,!0).forEach((function(e){e.reinitialize(!0)}))}},{key:"layoutRow",value:function(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")}},{key:"generateControlElement",value:function(e,t){var i=this,n=e.modules.dataTree,o=(t=t||e.getCells()[0].getElement(),n.controlEl);!1!==n.children&&(n.open?(n.controlEl=this.collapseEl.cloneNode(!0),n.controlEl.addEventListener("click",(function(t){t.stopPropagation(),i.collapseRow(e)}))):(n.controlEl=this.expandEl.cloneNode(!0),n.controlEl.addEventListener("click",(function(t){t.stopPropagation(),i.expandRow(e)}))),n.controlEl.addEventListener("mousedown",(function(e){e.stopPropagation()})),o&&o.parentNode===t?o.parentNode.replaceChild(n.controlEl,o):t.insertBefore(n.controlEl,t.firstChild))}},{key:"setDisplayIndex",value:function(e){this.displayIndex=e}},{key:"getDisplayIndex",value:function(){return this.displayIndex}},{key:"getRows",value:function(e){var t=this,i=[];return e.forEach((function(e,n){var o;i.push(e),e instanceof D&&(e.create(),(o=e.modules.dataTree.children).index||!1===o.children||t.getChildren(e).forEach((function(e){e.create(),i.push(e)})))})),i}},{key:"getChildren",value:function(e,t){var i=this,n=e.modules.dataTree,o=[],a=[];return!1!==n.children&&(n.open||t)&&(Array.isArray(n.children)||(n.children=this.generateChildren(e)),o=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(n.children):n.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(o),o.forEach((function(e){a.push(e),i.getChildren(e).forEach((function(e){a.push(e)}))}))),a}},{key:"generateChildren",value:function(e){var t=this,i=[],n=e.getData()[this.field];return Array.isArray(n)||(n=[n]),n.forEach((function(n){var o=new D(n||{},t.table.rowManager);o.create(),o.modules.dataTree.index=e.modules.dataTree.index+1,o.modules.dataTree.parent=e,o.modules.dataTree.children&&(o.modules.dataTree.open=t.startOpen(o.getComponent(),o.modules.dataTree.index)),i.push(o)})),i}},{key:"expandRow",value:function(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))}},{key:"collapseRow",value:function(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))}},{key:"toggleRow",value:function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))}},{key:"isRowExpanded",value:function(e){return e.modules.dataTree.open}},{key:"getTreeParent",value:function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()}},{key:"getFilteredTreeChildren",value:function(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((function(e){e instanceof D&&i.push(e)}))),i}},{key:"rowDelete",value:function(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)}},{key:"addTreeChildRow",value:function(e,t,i,n){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!==n&&!1!==(o=this.findChildIndex(n,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)}},{key:"findChildIndex",value:function(t,i){var n=this,o=!1;return"object"==e(t)?t instanceof D?o=t.data:t instanceof RowComponent?o=t._getSelf().data:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&i.modules.dataTree&&(o=i.modules.dataTree.children.find((function(e){return e instanceof D&&e.element===t})))&&(o=o.data):o=null!=t&&i.data[this.field].find((function(e){return e.data[n.table.options.index]==t})),o&&(Array.isArray(i.data[this.field])&&(o=i.data[this.field].indexOf(o)),-1==o&&(o=!1)),o}},{key:"getTreeChildren",value:function(e,t,i){var n=this,o=e.modules.dataTree,a=[];return o.children&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),o.children.forEach((function(e){e instanceof D&&(a.push(t?e.getComponent():e),i&&(a=a.concat(n.getTreeChildren(e,t,i))))}))),a}},{key:"getChildField",value:function(){return this.field}},{key:"redrawNeeded",value:function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}]),r}(V);le.moduleName="dataTree";var ue={csv:function(t,i,n){var o=i&&i.delimiter?i.delimiter:",",a=[],r=[];t.forEach((function(t){var i=[];switch(t.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":t.columns.forEach((function(e,t){e&&1===e.depth&&(r[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')}));break;case"row":t.columns.forEach((function(t){if(t){switch(e(t.value)){case"object":t.value=JSON.stringify(t.value);break;case"undefined":case"null":t.value=""}i.push('"'+String(t.value).split('"').join('""')+'"')}})),a.push(i.join(o))}})),r.length&&a.unshift(r.join(o)),a=a.join("\n"),i.bom&&(a="\ufeff"+a),n(a,"text/csv")},json:function(e,t,i){var n=[];e.forEach((function(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((function(e){e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),n.push(t)}})),i(n=JSON.stringify(n,null,"\t"),"application/json")},jsonLines:function(e,t,i){var n=[];e.forEach((function(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((function(e){e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),n.push(JSON.stringify(t))}})),i(n.join("\n"),"application/x-ndjson")},pdf:function(t,i,n){var o=[],a=[],r={},s=i.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},l=i.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},u=i.jsPDF||{},c=i&&i.title?i.title:"";function h(t,i){var n=[];return t.columns.forEach((function(t){var o;if(t){switch(e(t.value)){case"object":t.value=JSON.stringify(t.value);break;case"undefined":case"null":t.value=""}o={content:t.value,colSpan:t.width,rowSpan:t.height},i&&(o.styles=i),n.push(o)}})),n}u.orientation||(u.orientation=i.orientation||"landscape"),u.unit||(u.unit="pt"),t.forEach((function(e){switch(e.type){case"header":o.push(h(e));break;case"group":a.push(h(e,s));break;case"calc":a.push(h(e,l));break;case"row":a.push(h(e))}}));var d=new jspdf.jsPDF(u);i&&i.autoTable&&(r="function"==typeof i.autoTable?i.autoTable(d)||{}:i.autoTable),c&&(r.didDrawPage=function(e){d.text(c,40,30)}),r.head=o,r.body=a,d.autoTable(r),i&&i.documentProcessing&&i.documentProcessing(d),n(d.output("arraybuffer"),"application/pdf")},xlsx:function(t,i,n){var o=i.sheetName||"Sheet1",a=XLSX.utils.book_new(),r=new g(this);function s(){var i=[],n=[],o={},a={s:{c:0,r:0},e:{c:t[0]?t[0].columns.reduce((function(e,t){return e+(t&&t.width?t.width:1)}),0):0,r:t.length}};return t.forEach((function(t,o){var a=[];t.columns.forEach((function(t,i){t?(a.push(t.value instanceof Date||"object"!==e(t.value)?t.value:JSON.stringify(t.value)),(t.width>1||t.height>-1)&&(t.height>1||t.width>1)&&n.push({s:{r:o,c:i},e:{r:o+t.height-1,c:i+t.width-1}})):a.push("")})),i.push(a)})),XLSX.utils.sheet_add_aoa(o,i),o["!ref"]=XLSX.utils.encode_range(a),n.length&&(o["!merges"]=n),o}if(a.SheetNames=[],a.Sheets={},i.sheetOnly)n(s());else{if(i.sheets)for(var l in i.sheets)!0===i.sheets[l]?(a.SheetNames.push(l),a.Sheets[l]=s()):(a.SheetNames.push(l),r.commsSend(i.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){a.Sheets[l]=e}}));else a.SheetNames.push(o),a.Sheets[o]=s();i.documentProcessing&&(a=i.documentProcessing(a)),n(function(e){for(var t=new ArrayBuffer(e.length),i=new Uint8Array(t),n=0;n!=e.length;++n)i[n]=255&e.charCodeAt(n);return t}(XLSX.write(a,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.genereateHTMLTable(e),"text/html")}},ce=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).registerTableOption("downloadReady",(function(e,t){return t})),o.registerTableOption("downloadConfig",{}),o.registerTableOption("downloadRowRange","active"),o.registerColumnOption("download"),o.registerColumnOption("titleDownload"),o}return o(n,[{key:"initialize",value:function(){this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}},{key:"downloadToTab",value:function(e,t,i,n){this.download(e,t,i,n,!0)}},{key:"download",value:function(e,t,i,o,a){var r=!1;if("function"==typeof e?r=e:n.downloaders[e]?r=n.downloaders[e]:console.warn("Download Error - No such download type found: ",e),r){var s=this.generateExportList(o);r.call(this.table,s,i||{},function(i,n){a?!0===a?this.triggerDownload(i,n,e,t,!0):a(i):this.triggerDownload(i,n,e,t)}.bind(this))}}},{key:"generateExportList",value:function(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((function(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}},{key:"triggerDownload",value:function(e,t,i,n,o){var a=document.createElement("a"),r=new Blob([e],{type:t});n=n||"Tabulator."+("function"==typeof i?"txt":i);(r=this.table.options.downloadReady(e,r))&&(o?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,n):(a.setAttribute("href",window.URL.createObjectURL(r)),a.setAttribute("download",n),a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a)),this.dispatchExternal("downloadComplete"))}},{key:"commsReceived",value:function(e,t,i){switch(t){case"intercept":this.download(i.type,"",i.options,i.active,i.intercept)}}}]),n}(V);function he(e,t){var i=t.mask,n=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",a=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*";function r(t){var s=i[t];void 0!==s&&s!==a&&s!==n&&s!==o&&(e.value=e.value+""+s,r(t+1))}e.addEventListener("keydown",(function(t){var r=e.value.length,s=t.key;if(t.keyCode>46){if(r>=i.length)return t.preventDefault(),t.stopPropagation(),!1;switch(i[r]){case n:if(s.toUpperCase()==s.toLowerCase())return t.preventDefault(),t.stopPropagation(),!1;break;case o:if(isNaN(s))return t.preventDefault(),t.stopPropagation(),!1;break;case a:break;default:if(s!==i[r])return t.preventDefault(),t.stopPropagation(),!1}}})),e.addEventListener("keyup",(function(i){i.keyCode>46&&t.maskAutoFill&&r(e.value.length)})),e.placeholder||(e.placeholder=i),t.maskAutoFill&&r(e.value.length)}ce.moduleName="download",ce.downloaders=ue;var de=function(){function i(e,n,o,a,r,s){t(this,i),this.edit=e,this.table=e.table,this.cell=n,this.params=this._initializeParams(s),this.data=[],this.displayItems=[],this.currentItems=[],this.focusedItem=null,this.input=this._createInputElement(),this.listEl=this._createListElement(),this.initialValues=null,this.isFilter=!n._getSelf,this.filterTimeout=null,this.filtered=!1,this.typing=!1,this.values=[],this.popup=null,this.listIteration=0,this.blurable=!0,this.actions={success:a,cancel:r},this._deprecationCheck(),this._initializeValue(),o(this._onRendered.bind(this))}return o(i,[{key:"_deprecationCheck",value:function(){this.params.listItemFormatter&&console.warn("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.sortValuesList&&console.warn("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchFunc&&console.warn("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchingPlaceholder&&console.warn("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options")}},{key:"_initializeValue",value:function(){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.join(","),this.headerFilterInitialListGen())}},{key:"_onRendered",value:function(){var e=this.cell.getElement();function t(e){e.stopPropagation()}this.input.style.height="100%",this.input.focus({preventScroll:!0}),e.addEventListener("click",t),setTimeout((function(){e.removeEventListener("click",t)}),1e3)}},{key:"_createListElement",value:function(){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}},{key:"_setListWidth",value:function(){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)}},{key:"_createInputElement",value:function(){var t=this.params.elementAttributes,i=document.createElement("input");if(i.setAttribute("type",this.params.clearable?"search":"text"),i.style.padding="4px",i.style.width="100%",i.style.boxSizing="border-box",this.params.autocomplete||(i.style.cursor="default",i.style.caretColor="transparent"),t&&"object"==e(t))for(var n in t)"+"==n.charAt(0)?(n=n.slice(1),i.setAttribute(n,i.getAttribute(n)+t["+"+n])):i.setAttribute(n,t[n]);return this.params.mask&&he(i,this.params),this._bindInputEvents(i),i}},{key:"_initializeParams",value:function(t){var i,n=["values","valuesURL","valuesLookup"];return(t=Object.assign({},t)).verticalNavigation=t.verticalNavigation||"editor",t.placeholderLoading=void 0===t.placeholderLoading?"Searching ...":t.placeholderLoading,t.placeholderEmpty=void 0===t.placeholderEmpty?"No Results Found":t.placeholderEmpty,t.filterDelay=void 0===t.filterDelay?300:t.filterDelay,t.emptyValue=Object.keys(t).includes("emptyValue")?t.emptyValue:"",(i=Object.keys(t).filter((function(e){return n.includes(e)})).length)?i>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"),t.autocomplete?t.multiselect&&(t.multiselect=!1,console.warn("list editor config error - multiselect option is not available when autocomplete is enabled")):(t.freetext&&(t.freetext=!1,console.warn("list editor config error - freetext option is only available when autocomplete is enabled")),t.filterFunc&&(t.filterFunc=!1,console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled")),t.filterRemote&&(t.filterRemote=!1,console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled")),t.mask&&(t.mask=!1,console.warn("list editor config error - mask option is only available when autocomplete is enabled")),t.allowEmpty&&(t.allowEmpty=!1,console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled")),t.listOnEmpty&&(t.listOnEmpty=!1,console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"))),t.filterRemote&&"function"!=typeof t.valuesLookup&&!e(t.valuesURL)&&(t.filterRemote=!1,console.warn("list editor config error - filterRemote option should only be used when values list is populated from a remote source")),t}},{key:"_bindInputEvents",value:function(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))}},{key:"_inputFocus",value:function(e){this.rebuildOptionsList()}},{key:"_filter",value:function(){var e=this;this.params.filterRemote?(clearTimeout(this.filterTimeout),this.filterTimeout=setTimeout((function(){e.rebuildOptionsList()}),this.params.filterDelay)):this._filterList()}},{key:"_inputClick",value:function(e){e.stopPropagation()}},{key:"_inputBlur",value:function(e){this.blurable&&this.popup&&this.popup.hide()}},{key:"_inputSearch",value:function(){this._clearChoices()}},{key:"_inputKeyDown",value:function(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:break;default:this._keySelectLetter(e)}}},{key:"_inputKeyUp",value:function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:this._keyAutoCompLetter(e)}}},{key:"_preventBlur",value:function(){this.blurable=!1,setTimeout((function(){this.blurable=!0}),10)}},{key:"_keyUp",value:function(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]))}},{key:"_keyDown",value:function(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))}},{key:"_keyAutoCompLetter",value:function(e){this._filter(),this.typing=!0}},{key:"_scrollToValue",value:function(e){var t=this;clearTimeout(this.filterTimeout);var i=String.fromCharCode(e).toLowerCase();this.filterTerm+=i.toLowerCase();var n=this.displayItems.find((function(e){return void 0!==e.label&&e.label.toLowerCase().startsWith(t.filterTerm)}));n&&this._focusItem(n),this.filterTimeout=setTimeout((function(){t.filterTerm=""}),800)}},{key:"_focusItem",value:function(e){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"}))}},{key:"headerFilterInitialListGen",value:function(){this._generateOptions(!0)}},{key:"rebuildOptionsList",value:function(){this._generateOptions().then(this._sortOptions.bind(this)).then(this._buildList.bind(this)).then(this._showList.bind(this)).catch((function(e){Number.isInteger(e)||console.error("List generation error",e)}))}},{key:"_filterList",value:function(){this._buildList(this._filterOptions()),this._showList()}},{key:"_generateOptions",value:function(e){var t=this,i=[],n=++this.listIteration;return this.filtered=!1,this.params.values?i=this.params.values:this.params.valuesURL?i=this._ajaxRequest(this.params.valuesURL,this.input.value):"function"==typeof this.params.valuesLookup?i=this.params.valuesLookup(cell,this.input.value):this.params.valuesLookup&&(i=this._uniqueColumnValues(this.params.valuesLookupField)),i instanceof Promise?(e||this._addPlaceholder(this.params.placeholderLoading),i.then().then((function(e){return t.listIteration===n?t._parseList(e):Promise.reject(n)}))):Promise.resolve(this._parseList(i))}},{key:"_addPlaceholder",value:function(e){var t=document.createElement("div");"function"==typeof e&&(e=e(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())}},{key:"_ajaxRequest",value:function(e,t){return e=ee(e,{},this.params.filterRemote?{term:t}:{}),fetch(e).then((function(e){return e.ok?e.json().catch((function(e){return 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((function(e){return console.error("List Ajax Load Error - Connection Error: ",e),Promise.reject(e)}))}},{key:"_uniqueColumnValues",value:function(e){var t,i={},n=this.table.getData(this.params.valuesLookup);return(t=e?this.table.columnManager.getColumnByField(e):this.cell.getColumn()._getSelf())?n.forEach((function(e){var n=t.getFieldValue(e);null!=n&&""!==n&&(i[n]=!0)})):(console.warn("unable to find matching column to create select lookup list:",e),i=[]),Object.keys(i)}},{key:"_parseList",value:function(t){var i=this,n=[];return Array.isArray(t)||(t=Object.entries(t).map((function(e){var t=h(e,2),i=t[0];return{label:t[1],value:i}}))),t.forEach((function(t){"object"!==e(t)&&(t={label:t,value:t}),i._parseListItem(t,n,0)})),this.data=n,n}},{key:"_parseListItem",value:function(e,t,i){var n={};e.options?n=this._parseListGroup(e,i+1):(n={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(n,!0)),t.push(n)}},{key:"_parseListGroup",value:function(e,t){var i=this,n={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1,visible:!0,level:t,options:[],original:e};return e.options.forEach((function(e){i._parseListItem(e,n.options,t)})),n}},{key:"_sortOptions",value:function(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}},{key:"_sortGroup",value:function(e,t){var i=this;t.sort((function(t,i){return e(t.label,i.label,t.value,i.value,t.original,i.original)})),t.forEach((function(t){t.group&&i._sortGroup(e,t.options)}))}},{key:"_defaultSortFunction",value:function(e,t){var i,n,o,a,r,s=0,l=/(\d+)|(\D+)/g,u=/\d/,c=0;if("desc"===this.params.sort){var h=[t,e];e=h[0],t=h[1]}if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((i=String(e).toLowerCase())===(n=String(t).toLowerCase()))return 0;if(!u.test(i)||!u.test(n))return i>n?1:-1;for(i=i.match(l),n=n.match(l),r=i.length>n.length?n.length:i.length;sa?1:-1;return i.length>n.length}c=1}else c=t||0===t?-1:0;return c}},{key:"_filterOptions",value:function(){var e=this,t=this.params.filterFunc||this._defaultFilterFunc,i=this.input.value;return i?(this.filtered=!0,this.data.forEach((function(n){e._filterItem(t,i,n)}))):this.filtered=!1,this.data}},{key:"_filterItem",value:function(e,t,i){var n=this,o=!1;return i.group?(i.options.forEach((function(i){n._filterItem(e,t,i)&&(o=!0)})),i.visible=o):i.visible=e(t,i.label,i.value,i.original),i.visible}},{key:"_defaultFilterFunc",value:function(e,t,i,n){e=String(e).toLowerCase();return(null!==t||void 0!==t)&&(String(t).toLowerCase().indexOf(e)>-1||String(i).toLowerCase(e).indexOf()>-1)}},{key:"_clearList",value:function(){for(;this.listEl.firstChild;)this.listEl.removeChild(this.listEl.firstChild);this.displayItems=[]}},{key:"_buildList",value:function(e){var t=this;this._clearList(),e.forEach((function(e){t._buildItem(e)})),this.displayItems.length||this._addPlaceholder(this.params.placeholderEmpty)}},{key:"_buildItem",value:function(t){var i,n=this,o=t.element;if(!this.filtered||t.visible){if(!o){if((o=document.createElement("div")).tabIndex=0,(i=this.params.itemFormatter?this.params.itemFormatter(t.label,t.value,t.original,o):t.label)instanceof HTMLElement?o.appendChild(i):o.innerHTML=i,t.group?o.classList.add("tabulator-edit-list-group"):o.classList.add("tabulator-edit-list-item"),o.classList.add("tabulator-edit-list-group-level-"+t.level),t.elementAttributes&&"object"==e(t.elementAttributes))for(var a in t.elementAttributes)"+"==a.charAt(0)?(a=a.slice(1),o.setAttribute(a,this.input.getAttribute(a)+t.elementAttributes["+"+a])):o.setAttribute(a,t.elementAttributes[a]);t.group?o.addEventListener("click",this._groupClick.bind(this,t)):o.addEventListener("click",this._itemClick.bind(this,t)),o.addEventListener("mousedown",this._preventBlur.bind(this)),t.element=o}this._styleItem(t),this.listEl.appendChild(o),t.group?t.options.forEach((function(e){n._buildItem(e)})):this.displayItems.push(t)}}},{key:"_showList",value:function(){var e=this.popup&&this.popup.isVisible();if(this.input.parentNode){if(this.params.autocomplete&&""===this.input.value&&!this.params.listOnEmpty&&this.popup)return void this.popup.hide(!0);this._setListWidth(),this.popup||(this.popup=this.edit.popup(this.listEl)),this.popup.show(this.cell.getElement(),"bottom"),e||this.popup.hideOnBlur(this._resolveValue.bind(this,!0))}}},{key:"_styleItem",value:function(e){e&&e.element&&(e.selected?e.element.classList.add("active"):e.element.classList.remove("active"))}},{key:"_itemClick",value:function(e,t){t.stopPropagation(),this._chooseItem(e)}},{key:"_groupClick",value:function(e,t){t.stopPropagation()}},{key:"_cancel",value:function(){this.popup.hide(!0),this.actions.cancel()}},{key:"_clearChoices",value:function(){var e=this;this.typing=!0,this.currentItems.forEach((function(t){t.selected=!1,e._styleItem(t)})),this.currentItems=[],this.focusedItem=null}},{key:"_chooseItem",value:function(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((function(e){return 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)}},{key:"_resolveValue",value:function(e){var t,i;if(this.popup.hide(!0),this.params.multiselect)t=this.currentItems.map((function(e){return 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=this.initialValues[0])||""===i?i:this.params.emptyValue;""===t&&(t=this.params.emptyValue),this.actions.success(t),this.isFilter&&(this.initialValues=t&&!Array.isArray[t]?[t]:t)}}]),i}();var me={input:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input");if(s.setAttribute("type",a.search?"search":"text"),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var l in a.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),s.setAttribute(l,s.getAttribute(l)+a.elementAttributes["+"+l])):s.setAttribute(l,a.elementAttributes[l]);function u(e){null==r&&""!==s.value||s.value!==r?n(s.value)&&(r=s.value):o()}return s.value=void 0!==r?r:"",i((function(){s.focus({preventScroll:!0}),s.style.height="100%",a.selectContents&&s.select()})),s.addEventListener("change",u),s.addEventListener("blur",u),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:u();break;case 27:o();break;case 35:case 36:e.stopPropagation()}})),a.mask&&he(s,a),s},textarea:function(t,i,n,o,a){var r=t.getValue(),s=a.verticalNavigation||"hybrid",l=String(null!=r?r:""),u=((l.match(/(?:\r\n|\r|\n)/g)||[]).length,document.createElement("textarea")),c=0;if(u.style.display="block",u.style.padding="2px",u.style.height="100%",u.style.width="100%",u.style.boxSizing="border-box",u.style.whiteSpace="pre-wrap",u.style.resize="none",a.elementAttributes&&"object"==e(a.elementAttributes))for(var h in a.elementAttributes)"+"==h.charAt(0)?(h=h.slice(1),u.setAttribute(h,u.getAttribute(h)+a.elementAttributes["+"+h])):u.setAttribute(h,a.elementAttributes[h]);function d(e){null==r&&""!==u.value||u.value!==r?(n(u.value)&&(r=u.value),setTimeout((function(){t.getRow().normalizeHeight()}),300)):o()}return u.value=l,i((function(){u.focus({preventScroll:!0}),u.style.height="100%",u.scrollHeight,u.style.height=u.scrollHeight+"px",t.getRow().normalizeHeight(),a.selectContents&&u.select()})),u.addEventListener("change",d),u.addEventListener("blur",d),u.addEventListener("keyup",(function(){u.style.height="";var e=u.scrollHeight;u.style.height=e+"px",e!=c&&(c=e,t.getRow().normalizeHeight())})),u.addEventListener("keydown",(function(e){switch(e.keyCode){case 27:o();break;case 38:("editor"==s||"hybrid"==s&&u.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==s||"hybrid"==s&&u.selectionStart!==u.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),a.mask&&he(u,a),u},number:function(t,i,n,o,a){var r=t.getValue(),s=a.verticalNavigation||"editor",l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==a.max&&l.setAttribute("max",a.max),void 0!==a.min&&l.setAttribute("min",a.min),void 0!==a.step&&l.setAttribute("step",a.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var u in a.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),l.setAttribute(u,l.getAttribute(u)+a.elementAttributes["+"+u])):l.setAttribute(u,a.elementAttributes[u]);l.value=r;var c=function(e){h()};function h(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!==r?n(e)&&(r=e):o()}return i((function(){l.removeEventListener("blur",c),l.focus({preventScroll:!0}),l.style.height="100%",l.addEventListener("blur",c),a.selectContents&&l.select()})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:h();break;case 27:o();break;case 38:case 40:"editor"==s&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),a.mask&&he(l,a),l},range:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input");if(s.setAttribute("type","range"),void 0!==a.max&&s.setAttribute("max",a.max),void 0!==a.min&&s.setAttribute("min",a.min),void 0!==a.step&&s.setAttribute("step",a.step),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var l in a.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),s.setAttribute(l,s.getAttribute(l)+a.elementAttributes["+"+l])):s.setAttribute(l,a.elementAttributes[l]);function u(){var e=s.value;isNaN(e)||""===e||(e=Number(e)),e!=r?n(e)&&(r=e):o()}return s.value=r,i((function(){s.focus({preventScroll:!0}),s.style.height="100%"})),s.addEventListener("blur",(function(e){u()})),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:u();break;case 27:o()}})),s},select:function(e,t,i,n,o){return console.warn("The select editor has been deprecated, please use the new list editor"),new de(this,e,t,i,n,o).input},list:function(e,t,i,n,o){return new de(this,e,t,i,n,o).input},autocomplete:function(e,t,i,n,o){return console.warn("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"),o.autocomplete=!0,new de(this,e,t,i,n,o).input},star:function(t,i,n,o,a){var r=this,s=t.getElement(),l=t.getValue(),u=s.getElementsByTagName("svg").length||5,c=s.getElementsByTagName("svg")[0]?s.getElementsByTagName("svg")[0].getAttribute("width"):14,h=[],d=document.createElement("div"),m=document.createElementNS("http://www.w3.org/2000/svg","svg");function p(e){h.forEach((function(t,i){i'):("ie"==r.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')}))}function f(e){var t=document.createElement("span"),i=m.cloneNode(!0);h.push(i),t.addEventListener("mouseenter",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),p(e)})),t.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),t.addEventListener("click",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),n(e),s.blur()})),t.appendChild(i),d.appendChild(t)}function g(e){l=e,p(e)}if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",d.style.verticalAlign="middle",d.style.display="inline-block",d.style.padding="4px",m.setAttribute("width",c),m.setAttribute("height",c),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",a.elementAttributes&&"object"==e(a.elementAttributes))for(var v in a.elementAttributes)"+"==v.charAt(0)?(v=v.slice(1),d.setAttribute(v,d.getAttribute(v)+a.elementAttributes["+"+v])):d.setAttribute(v,a.elementAttributes[v]);for(var b=1;b<=u;b++)f(b);return p(l=Math.min(parseInt(l),u)),d.addEventListener("mousemove",(function(e){p(0)})),d.addEventListener("click",(function(e){n(0)})),s.addEventListener("blur",(function(e){o()})),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:g(l+1);break;case 37:g(l-1);break;case 13:n(l);break;case 27:o()}})),d},progress:function(t,i,n,o,a){var r,s,l=t.getElement(),u=void 0===a.max?l.getElementsByTagName("div")[0]&&l.getElementsByTagName("div")[0].getAttribute("max")||100:a.max,c=void 0===a.min?l.getElementsByTagName("div")[0]&&l.getElementsByTagName("div")[0].getAttribute("min")||0:a.min,h=(u-c)/100,d=t.getValue()||0,m=document.createElement("div"),p=document.createElement("div");function f(){var e=window.getComputedStyle(l,null),t=h*Math.round(p.offsetWidth/((l.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+c;n(t),l.setAttribute("aria-valuenow",t),l.setAttribute("aria-label",d)}if(m.style.position="absolute",m.style.right="0",m.style.top="0",m.style.bottom="0",m.style.width="5px",m.classList.add("tabulator-progress-handle"),p.style.display="inline-block",p.style.position="relative",p.style.height="100%",p.style.backgroundColor="#488CE9",p.style.maxWidth="100%",p.style.minWidth="0%",a.elementAttributes&&"object"==e(a.elementAttributes))for(var g in a.elementAttributes)"+"==g.charAt(0)?(g=g.slice(1),p.setAttribute(g,p.getAttribute(g)+a.elementAttributes["+"+g])):p.setAttribute(g,a.elementAttributes[g]);return l.style.padding="4px 4px",d=Math.min(parseFloat(d),u),d=Math.max(parseFloat(d),c),d=Math.round((d-c)/h),p.style.width=d+"%",l.setAttribute("aria-valuemin",c),l.setAttribute("aria-valuemax",u),p.appendChild(m),m.addEventListener("mousedown",(function(e){r=e.screenX,s=p.offsetWidth})),m.addEventListener("mouseover",(function(){m.style.cursor="ew-resize"})),l.addEventListener("mousemove",(function(e){r&&(p.style.width=s+e.screenX-r+"px")})),l.addEventListener("mouseup",(function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,s=!1,f())})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),p.style.width=p.clientWidth+l.clientWidth/100+"px";break;case 37:e.preventDefault(),p.style.width=p.clientWidth-l.clientWidth/100+"px";break;case 9:case 13:f();break;case 27:o()}})),l.addEventListener("blur",(function(){o()})),p},tickCross:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input"),l=a.tristate,u=void 0===a.indeterminateValue?null:a.indeterminateValue,c=!1,h=Object.keys(a).includes("trueValue"),d=Object.keys(a).includes("falseValue");if(s.setAttribute("type","checkbox"),s.style.marginTop="5px",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var m in a.elementAttributes)"+"==m.charAt(0)?(m=m.slice(1),s.setAttribute(m,s.getAttribute(m)+a.elementAttributes["+"+m])):s.setAttribute(m,a.elementAttributes[m]);function p(e){var t=s.checked;return t=h&&t?a.trueValue:d&&!t?a.falseValue:t,l?e?c?u:t:s.checked&&!c?(s.checked=!1,s.indeterminate=!0,c=!0,u):(c=!1,t):t}return s.value=r,!l||void 0!==r&&r!==u&&""!==r||(c=!0,s.indeterminate=!0),"firefox"!=this.table.browser&&i((function(){s.focus({preventScroll:!0})})),s.checked=h?r===a.trueValue:!0===r||"true"===r||"True"===r||1===r,i((function(){s.focus()})),s.addEventListener("change",(function(e){n(p())})),s.addEventListener("blur",(function(e){n(p(!0))})),s.addEventListener("keydown",(function(e){13==e.keyCode&&n(p()),27==e.keyCode&&o()})),s}},pe=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).currentCell=!1,i.mouseClick=!1,i.recursionBlock=!1,i.invalidEdit=!1,i.editedCells=[],i.editors=r.editors,i.registerColumnOption("editable"),i.registerColumnOption("editor"),i.registerColumnOption("editorParams"),i.registerColumnOption("cellEditing"),i.registerColumnOption("cellEdited"),i.registerColumnOption("cellEditCancelled"),i.registerTableFunction("getEditedCells",i.getEditedCells.bind(l(i))),i.registerTableFunction("clearCellEdited",i.clearCellEdited.bind(l(i))),i.registerTableFunction("navigatePrev",i.navigatePrev.bind(l(i))),i.registerTableFunction("navigateNext",i.navigateNext.bind(l(i))),i.registerTableFunction("navigateLeft",i.navigateLeft.bind(l(i))),i.registerTableFunction("navigateRight",i.navigateRight.bind(l(i))),i.registerTableFunction("navigateUp",i.navigateUp.bind(l(i))),i.registerTableFunction("navigateDown",i.navigateDown.bind(l(i))),i.registerComponentFunction("cell","isEdited",i.cellisEdited.bind(l(i))),i.registerComponentFunction("cell","clearEdited",i.clearEdited.bind(l(i))),i.registerComponentFunction("cell","edit",i.editCell.bind(l(i))),i.registerComponentFunction("cell","cancelEdit",i.cellCancelEdit.bind(l(i))),i.registerComponentFunction("cell","navigatePrev",i.navigatePrev.bind(l(i))),i.registerComponentFunction("cell","navigateNext",i.navigateNext.bind(l(i))),i.registerComponentFunction("cell","navigateLeft",i.navigateLeft.bind(l(i))),i.registerComponentFunction("cell","navigateRight",i.navigateRight.bind(l(i))),i.registerComponentFunction("cell","navigateUp",i.navigateUp.bind(l(i))),i.registerComponentFunction("cell","navigateDown",i.navigateDown.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-init",this.bindEditor.bind(this)),this.subscribe("cell-delete",this.clearEdited.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("data-refreshing",this.cancelEdit.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-left",this.navigateLeft.bind(this,void 0)),this.subscribe("keybinding-nav-right",this.navigateRight.bind(this,void 0)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this,void 0)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this,void 0))}},{key:"keybindingNavigateNext",value:function(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(t,e)||i&&(t.getElement().firstChild.blur(),(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(t.row.getComponent())):this.table.addRow(Object.assign({},i))).then((function(){setTimeout((function(){t.getComponent().navigateNext()}))}))))}},{key:"cellisEdited",value:function(e){return!!e.modules.edit&&e.modules.edit.edited}},{key:"cellCancelEdit",value:function(e){e===this.currentCell?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},{key:"clearCellEdited",value:function(e){var t=this;e||(e=this.table.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach((function(e){t.table.modules.edit.clearEdited(e._getSelf())}))}},{key:"navigatePrev",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;if(i){if(n&&n.preventDefault(),e=this.navigateLeft())return!0;if((t=this.table.rowManager.prevDisplayRow(i.row,!0))&&(e=this.findNextEditableCell(t,t.cells.length)))return e.getComponent().edit(),!0}return!1}},{key:"navigateNext",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;if(i){if(n&&n.preventDefault(),e=this.navigateRight())return!0;if((t=this.table.rowManager.nextDisplayRow(i.row,!0))&&(e=this.findNextEditableCell(t,-1)))return e.getComponent().edit(),!0}return!1}},{key:"navigateLeft",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;return!!(i&&(n&&n.preventDefault(),e=i.getIndex(),t=this.findPrevEditableCell(i.row,e)))&&(t.getComponent().edit(),!0)}},{key:"navigateRight",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;return!!(i&&(n&&n.preventDefault(),e=i.getIndex(),t=this.findNextEditableCell(i.row,e)))&&(t.getComponent().edit(),!0)}},{key:"navigateUp",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;return!!(i&&(n&&n.preventDefault(),e=i.getIndex(),t=this.table.rowManager.prevDisplayRow(i.row,!0)))&&(t.cells[e].getComponent().edit(),!0)}},{key:"navigateDown",value:function(){var e,t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.currentCell,n=arguments.length>1?arguments[1]:void 0;return!!(i&&(n&&n.preventDefault(),e=i.getIndex(),t=this.table.rowManager.nextDisplayRow(i.row,!0)))&&(t.cells[e].getComponent().edit(),!0)}},{key:"findNextEditableCell",value:function(e,t){var i=!1;if(t0)for(var n=t-1;n>=0;n--){var o=e.cells[n],a=!0;if(o.column.modules.edit&&k.elVisible(o.getElement())&&("function"==typeof o.column.modules.edit.check&&(a=o.column.modules.edit.check(o.getComponent())),a)){i=o;break}}return i}},{key:"initializeColumnCheck",value:function(e){void 0!==e.definition.editor&&this.initializeColumn(e)}},{key:"columnDeleteCheck",value:function(e){this.currentCell&&this.currentCell.column===e&&this.cancelEdit()}},{key:"rowDeleteCheck",value:function(e){this.currentCell&&this.currentCell.row===e&&this.cancelEdit()}},{key:"initializeColumn",value:function(t){var i={editor:!1,blocked:!1,check:t.definition.editable,params:t.definition.editorParams||{}};switch(e(t.definition.editor)){case"string":this.editors[t.definition.editor]?i.editor=this.editors[t.definition.editor]:console.warn("Editor Error - No such editor found: ",t.definition.editor);break;case"function":i.editor=t.definition.editor;break;case"boolean":!0===t.definition.editor&&("function"!=typeof t.definition.formatter?this.editors[t.definition.formatter]?i.editor=this.editors[t.definition.formatter]:i.editor=this.editors.input:console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",t.definition.formatter))}i.editor&&(t.modules.edit=i)}},{key:"getCurrentCell",value:function(){return!!this.currentCell&&this.currentCell.getComponent()}},{key:"clearEditor",value:function(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-row-editing")}}},{key:"cancelEdit",value:function(){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)}}},{key:"bindEditor",value:function(e){if(e.column.modules.edit){var t=this,i=e.getElement(!0);i.setAttribute("tabindex",0),i.addEventListener("click",(function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})})),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),i.addEventListener("focus",(function(i){t.recursionBlock||t.edit(e,i,!1)}))}}},{key:"focusCellNoEvent",value:function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1}},{key:"editCell",value:function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)}},{key:"focusScrollAdjust",value:function(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,n=e.row.getElement();n.offsetTop;n.offsetTopi&&(this.table.rowManager.element.scrollTop+=n.offsetTop+n.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,a=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();r.offsetLeft;this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin),a-=parseInt(this.table.modules.frozenColumns.rightMargin)),"virtual"===this.table.options.renderHorizontal&&(o-=parseInt(this.table.columnManager.renderer.vDomPadLeft),a-=parseInt(this.table.columnManager.renderer.vDomPadLeft)),r.offsetLefta&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-a)}}},{key:"edit",value:function(t,i,n){var o,a,r,s=this,l=!0,u=function(){},c=t.getElement();if(!this.currentCell){if(t.column.modules.edit.blocked)return this.mouseClick=!1,c.blur(),!1;switch(i&&i.stopPropagation(),e(t.column.modules.edit.check)){case"function":l=t.column.modules.edit.check(t.getComponent());break;case"boolean":l=t.column.modules.edit.check}if(l||n){if(s.cancelEdit(),s.currentCell=t,this.focusScrollAdjust(t),a=t.getComponent(),this.mouseClick&&(this.mouseClick=!1,t.column.definition.cellClick&&t.column.definition.cellClick.call(this.table,i,a)),t.column.definition.cellEditing&&t.column.definition.cellEditing.call(this.table,a),this.dispatch("cell-editing",t),this.dispatchExternal("cellEditing",a),r="function"==typeof t.column.modules.edit.params?t.column.modules.edit.params(a):t.column.modules.edit.params,!1===(o=t.column.modules.edit.editor.call(s,a,(function(e){u=e}),(function(e){if(s.currentCell===t){var i=s.chain("edit-success",[t,e],!0,!0);return!0===i||"highlight"===s.table.options.validationMode?(s.clearEditor(),t.modules.edit||(t.modules.edit={}),t.modules.edit.edited=!0,-1==s.editedCells.indexOf(t)&&s.editedCells.push(t),t.setValue(e,!0),!0===i):(s.invalidEdit=!0,s.focusCellNoEvent(t,!0),u(),!1)}}),(function(){s.currentCell===t&&s.cancelEdit()}),r)))return c.blur(),!1;if(!(o instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",o),c.blur(),!1;for(c.classList.add("tabulator-editing"),t.row.getElement().classList.add("tabulator-row-editing");c.firstChild;)c.removeChild(c.firstChild);c.appendChild(o),u();for(var h=c.children,d=0;d-1&&this.editedCells.splice(t,1)}}]),r}(V);pe.moduleName="edit",pe.editors=me;var fe=function e(i,n,o,a){t(this,e),this.type=i,this.columns=n,this.component=o||!1,this.indent=a||0},ge=function e(i,n,o,a,r){t(this,e),this.value=i,this.component=n||!1,this.width=o,this.height=a,this.depth=r},ve=function(n){a(s,n);var r=c(s);function s(e){var i;return t(this,s),(i=r.call(this,e)).config={},i.cloneTableStyle=!0,i.colVisProp="",i.registerTableOption("htmlOutputConfig",!1),i.registerColumnOption("htmlOutput"),i.registerColumnOption("titleHtmlOutput"),i}return o(s,[{key:"initialize",value:function(){this.registerTableFunction("getHtml",this.getHtml.bind(this))}},{key:"generateExportList",value:function(e,t,i,n){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=n;var o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],a=this.bodyToExportRows(this.rowLookup(i));return o.concat(a)}},{key:"genereateTable",value:function(e,t,i,n){var o=this.generateExportList(e,t,i,n);return this.genereateTableElement(o)}},{key:"rowLookup",value:function(e){var t=this,i=[];if("function"==typeof e)e.call(this.table).forEach((function(e){(e=t.table.rowManager.findRow(e))&&i.push(e)}));else switch(e){case!0:case"visible":i=this.table.rowManager.getVisibleRows(!1,!0);break;case"all":i=this.table.rowManager.rows;break;case"selected":i=this.table.modules.selectRow.selectedRows;break;case"active":default:i=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],i)}},{key:"generateColumnGroupHeaders",value:function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((function(i){var n=e.processColumnGroup(i);n&&t.push(n)})),t}},{key:"processColumnGroup",value:function(e){var t=this,i=e.columns,n=0,o={title:e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,column:e,depth:1};if(i.length){if(o.subGroups=[],o.width=0,i.forEach((function(e){var i=t.processColumnGroup(e);i&&(o.width+=i.width,o.subGroups.push(i),i.depth>n&&(n=i.depth))})),o.depth+=n,!o.width)return!1}else{if(!this.columnVisCheck(e))return!1;o.width=1}return o}},{key:"columnVisCheck",value:function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])}},{key:"headersToExportRows",value:function(e){var t=[],i=0,n=[];function o(e,n){var a=i-n;if(void 0===t[n]&&(t[n]=[]),e.height=e.subGroups?1:a-e.depth+1,t[n].push(e),e.height>1)for(var r=1;r1)for(var s=1;si&&(i=e.depth)})),e.forEach((function(e){o(e,0)})),t.forEach((function(e){var t=[];e.forEach((function(e){if(e){var i=void 0===e.title?"":e.title;t.push(new ge(i,e.column.getComponent(),e.width,e.height,e.depth))}else t.push(null)})),n.push(new fe("header",t))})),n}},{key:"bodyToExportRows",value:function(e){var t=this,i=[],n=[];return this.table.columnManager.columnsByIndex.forEach((function(e){t.columnVisCheck(e)&&i.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((function(e){switch(e.type){case"group":return!1!==t.config.rowGroups;case"calc":return!1!==t.config.columnCalcs;case"row":return!(t.table.options.dataTree&&!1===t.config.dataTree&&e.modules.dataTree.parent)}return!0}))).forEach((function(e,o){var a=e.getData(t.colVisProp),r=[],s=0;switch(e.type){case"group":s=e.level,r.push(new ge(e.key,e.getComponent(),i.length,1));break;case"calc":case"row":i.forEach((function(e){r.push(new ge(e._column.getFieldValue(a),e,1,1))})),t.table.options.dataTree&&!1!==t.config.dataTree&&(s=e.modules.dataTree.index)}n.push(new fe(e.type,r,e.getComponent(),s))})),n}},{key:"genereateTableElement",value:function(e){var t=this,i=document.createElement("table"),n=document.createElement("thead"),o=document.createElement("tbody"),a=this.lookupTableStyles(),r=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],s={};return s.rowFormatter=null!==r?r:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(s.treeElementField=this.table.modules.dataTree.elementField),s.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],s.groupHeader&&!Array.isArray(s.groupHeader)&&(s.groupHeader=[s.groupHeader]),i.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),n,["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((function(e,i){switch(e.type){case"header":n.appendChild(t.genereateHeaderElement(e,s,a));break;case"group":o.appendChild(t.genereateGroupElement(e,s,a));break;case"calc":o.appendChild(t.genereateCalcElement(e,s,a));break;case"row":var r=t.genereateRowElement(e,s,a);t.mapElementStyles(i%2&&a.evenRow?a.evenRow:a.oddRow,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),o.appendChild(r)}})),n.innerHTML&&i.appendChild(n),i.appendChild(o),this.mapElementStyles(this.table.element,i,["border-top","border-left","border-right","border-bottom"]),i}},{key:"lookupTableStyles",value:function(){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}},{key:"genereateHeaderElement",value:function(e,t,i){var n=this,o=document.createElement("tr");return e.columns.forEach((function(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,n.cloneTableStyle&&(t.style.boxSizing="border-box"),i.forEach((function(e){t.classList.add(e)})),n.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?n.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&n.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),o.appendChild(t)}})),o}},{key:"genereateGroupElement",value:function(e,t,i){var n=document.createElement("tr"),o=document.createElement("td"),a=e.columns[0];return n.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?a.value=t.groupHeader[e.indent](a.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1===t.groupHeader?a.value=a.value:a.value=e.component._group.generator(a.value,e.component._group.getRowCount(),e.component._group.getData(),e.component),o.colSpan=a.width,o.innerHTML=a.value,n.classList.add("tabulator-print-table-group"),n.classList.add("tabulator-group-level-"+e.indent),a.component.isVisible()&&n.classList.add("tabulator-group-visible"),this.mapElementStyles(i.firstGroup,n,["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"]),n.appendChild(o),n}},{key:"genereateCalcElement",value:function(e,t,i){var n=this.genereateRowElement(e,t,i);return n.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(i.calcRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n}},{key:"genereateRowElement",value:function(t,n,o){var a=this,r=document.createElement("tr");return r.classList.add("tabulator-print-table-row"),t.columns.forEach((function(s){if(s){var l=document.createElement("td"),u=s.component._column,c=a.table.columnManager.findColumnIndex(u),h=s.value,d={modules:{},getValue:function(){return h},getField:function(){return u.definition.field},getElement:function(){return l},getColumn:function(){return u.getComponent()},getData:function(){return t.component.getData()},getRow:function(){return t.component},getComponent:function(){return d},column:u};if((u.definition.cssClass?u.definition.cssClass.split(" "):[]).forEach((function(e){l.classList.add(e)})),a.table.modExists("format")&&!1!==a.config.formatCells)h=a.table.modules.format.formatExportValue(d,a.colVisProp);else switch(e(h)){case"object":h=JSON.stringify(h);break;case"undefined":case"null":h="";break;default:h=h}h instanceof Node?l.appendChild(h):l.innerHTML=h,(o.styleCells[c]||o.firstCell)&&(a.mapElementStyles(o.styleCells[c]||o.firstCell,l,["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"]),u.definition.align&&(l.style.textAlign=u.definition.align)),a.table.options.dataTree&&!1!==a.config.dataTree&&(n.treeElementField&&n.treeElementField==u.field||!n.treeElementField&&0==i)&&(t.component._row.modules.dataTree.controlEl&&l.insertBefore(t.component._row.modules.dataTree.controlEl.cloneNode(!0),l.firstChild),t.component._row.modules.dataTree.branchEl&&l.insertBefore(t.component._row.modules.dataTree.branchEl.cloneNode(!0),l.firstChild)),r.appendChild(l),d.modules.format&&d.modules.format.renderedCallback&&d.modules.format.renderedCallback(),n.rowFormatter&&!1!==a.config.formatCells&&n.rowFormatter(t.component)}})),r}},{key:"genereateHTMLTable",value:function(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML}},{key:"getHtml",value:function(e,t,i,n){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,n||"htmlOutput");return this.genereateHTMLTable(o)}},{key:"mapElementStyles",value:function(e,t,i){if(this.cloneTableStyle&&e&&t){var n={"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[n[e]]=o.getPropertyValue(e)}))}}}}]),s}(V);ve.moduleName="export";var be={"=":function(e,t,i,n){return t==e},"<":function(e,t,i,n){return t":function(e,t,i,n){return t>e},">=":function(e,t,i,n){return t>=e},"!=":function(e,t,i,n){return t!=e},regex:function(e,t,i,n){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,i,n){var o=e.toLowerCase().split(void 0===n.separator?" ":n.separator),a=String(null==t?"":t).toLowerCase(),r=[];return o.forEach((function(e){a.includes(e)&&r.push(!0)})),n.matchAll?r.length===o.length:!!r.length},starts:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,i,n){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},ye=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).filterList=[],i.headerFilters={},i.headerFilterColumns=[],i.prevHeaderFilterChangeCheck="",i.prevHeaderFilterChangeCheck="{}",i.changed=!1,i.tableInitialized=!1,i.registerTableOption("filterMode","local"),i.registerTableOption("initialFilter",!1),i.registerTableOption("initialHeaderFilter",!1),i.registerTableOption("headerFilterLiveFilterDelay",300),i.registerColumnOption("headerFilter"),i.registerColumnOption("headerFilterPlaceholder"),i.registerColumnOption("headerFilterParams"),i.registerColumnOption("headerFilterEmptyCheck"),i.registerColumnOption("headerFilterFunc"),i.registerColumnOption("headerFilterFuncParams"),i.registerColumnOption("headerFilterLiveFilter"),i.registerTableFunction("searchRows",i.searchRows.bind(l(i))),i.registerTableFunction("searchData",i.searchData.bind(l(i))),i.registerTableFunction("setFilter",i.userSetFilter.bind(l(i))),i.registerTableFunction("refreshFilter",i.userRefreshFilter.bind(l(i))),i.registerTableFunction("addFilter",i.userAddFilter.bind(l(i))),i.registerTableFunction("getFilters",i.getFilters.bind(l(i))),i.registerTableFunction("setHeaderFilterFocus",i.userSetHeaderFilterFocus.bind(l(i))),i.registerTableFunction("getHeaderFilterValue",i.userGetHeaderFilterValue.bind(l(i))),i.registerTableFunction("setHeaderFilterValue",i.userSetHeaderFilterValue.bind(l(i))),i.registerTableFunction("getHeaderFilters",i.getHeaderFilters.bind(l(i))),i.registerTableFunction("removeFilter",i.userRemoveFilter.bind(l(i))),i.registerTableFunction("clearFilter",i.userClearFilter.bind(l(i))),i.registerTableFunction("clearHeaderFilter",i.userClearHeaderFilter.bind(l(i))),i.registerComponentFunction("column","headerFilterFocus",i.setHeaderFilterFocus.bind(l(i))),i.registerComponentFunction("column","reloadHeaderFilter",i.reloadHeaderFilter.bind(l(i))),i.registerComponentFunction("column","getHeaderFilterValue",i.getHeaderFilterValue.bind(l(i))),i.registerComponentFunction("column","setHeaderFilterValue",i.setHeaderFilterValue.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){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)),"remote"===this.table.options.filterMode&&this.subscribe("data-params",this.remoteFilterParams.bind(this)),this.registerDataHandler(this.filter.bind(this),10)}},{key:"tableBuilt",value:function(){var e=this;this.table.options.initialFilter&&this.setFilter(this.table.options.initialFilter),this.table.options.initialHeaderFilter&&this.table.options.initialHeaderFilter.forEach((function(t){var i=e.table.columnManager.findColumn(t.field);if(!i)return console.warn("Column Filter Error - No matching column found:",t.field),!1;e.setHeaderFilterValue(i,t.value)})),this.tableInitialized=!0}},{key:"remoteFilterParams",value:function(e,t,i,n){return n.filter=this.getFilters(!0,!0),n}},{key:"userSetFilter",value:function(e,t,i,n){this.setFilter(e,t,i,n),this.refreshFilter()}},{key:"userRefreshFilter",value:function(){this.refreshFilter()}},{key:"userAddFilter",value:function(e,t,i,n){this.addFilter(e,t,i,n),this.refreshFilter()}},{key:"userSetHeaderFilterFocus",value:function(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)}},{key:"userGetHeaderFilterValue",value:function(e){var t=this.table.columnManager.findColumn(e);if(t)return this.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}},{key:"userSetHeaderFilterValue",value:function(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)}},{key:"userRemoveFilter",value:function(e,t,i){this.removeFilter(e,t,i),this.refreshFilter()}},{key:"userClearFilter",value:function(e){this.clearFilter(e),this.refreshFilter()}},{key:"userClearHeaderFilter",value:function(){this.clearHeaderFilter(),this.refreshFilter()}},{key:"searchRows",value:function(e,t,i){return this.search("rows",e,t,i)}},{key:"searchData",value:function(e,t,i){return this.search("data",e,t,i)}},{key:"initializeColumnHeaderFilter",value:function(e){var t=e.definition;t.headerFilter&&(void 0!==t.headerFilterPlaceholder&&t.field&&this.module("localize").setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),this.initializeColumn(e))}},{key:"initializeColumn",value:function(t,i){var n=this,o=t.getField();t.modules.filter={success:function(i){var a,s="input"==t.modules.filter.tagType&&"text"==t.modules.filter.attrType||"textarea"==t.modules.filter.tagType?"partial":"match",l="",u="";if(void 0===t.modules.filter.prevSuccess||t.modules.filter.prevSuccess!==i){if(t.modules.filter.prevSuccess=i,t.modules.filter.emptyFunc(i))delete n.headerFilters[o];else{switch(t.modules.filter.value=i,e(t.definition.headerFilterFunc)){case"string":r.filters[t.definition.headerFilterFunc]?(l=t.definition.headerFilterFunc,a=function(e){var n=t.definition.headerFilterFuncParams||{},o=t.getFieldValue(e);return n="function"==typeof n?n(i,o,e):n,r.filters[t.definition.headerFilterFunc](i,o,e,n)}):console.warn("Header Filter Error - Matching filter function not found: ",t.definition.headerFilterFunc);break;case"function":l=a=function(e){var n=t.definition.headerFilterFuncParams||{},o=t.getFieldValue(e);return n="function"==typeof n?n(i,o,e):n,t.definition.headerFilterFunc(i,o,e,n)}}if(!a)switch(s){case"partial":a=function(e){var n=t.getFieldValue(e);return null!=n&&String(n).toLowerCase().indexOf(String(i).toLowerCase())>-1},l="like";break;default:a=function(e){return t.getFieldValue(e)==i},l="="}n.headerFilters[o]={value:i,func:a,type:l,params:{}}}t.modules.filter.value=i,u=JSON.stringify(n.headerFilters),n.prevHeaderFilterChangeCheck!==u&&(n.prevHeaderFilterChangeCheck=u,n.trackChanges(),n.refreshFilter())}return!0},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(t)}},{key:"generateHeaderFilterElement",value:function(t,i,n){var o,a,r,s,l,u,c,h=this,d=this,m=t.modules.filter.success,p=t.getField();if(t.modules.filter.value=i,t.modules.filter.headerElement&&t.modules.filter.headerElement.parentNode&&t.contentElement.removeChild(t.modules.filter.headerElement.parentNode),p){switch(t.modules.filter.emptyFunc=t.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e&&0!==e},(o=document.createElement("div")).classList.add("tabulator-header-filter"),e(t.definition.headerFilter)){case"string":d.table.modules.edit.editors[t.definition.headerFilter]?(a=d.table.modules.edit.editors[t.definition.headerFilter],"tick"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",t.definition.editor);break;case"function":a=t.definition.headerFilter;break;case"boolean":t.modules.edit&&t.modules.edit.editor?a=t.modules.edit.editor:t.definition.formatter&&d.table.modules.edit.editors[t.definition.formatter]?(a=d.table.modules.edit.editors[t.definition.formatter],"tick"!==t.definition.formatter&&"tickCross"!==t.definition.formatter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):a=d.table.modules.edit.editors.input}if(a){if(s={getValue:function(){return void 0!==i?i:""},getField:function(){return t.definition.field},getElement:function(){return o},getColumn:function(){return t.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},c="function"==typeof(c=t.definition.headerFilterParams||{})?c.call(d.table,s):c,!(r=a.call(this.table.modules.edit,s,(function(){}),m,(function(){}),c)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",r);p?d.langBind("headerFilters|columns|"+t.definition.field,(function(e){r.setAttribute("placeholder",void 0!==e&&e?e:d.langText("headerFilters|default"))})):d.langBind("headerFilters|default",(function(e){r.setAttribute("placeholder",e)})),r.addEventListener("click",(function(e){e.stopPropagation(),r.focus()})),r.addEventListener("focus",(function(e){var t=h.table.columnManager.element.scrollLeft;t!==h.table.rowManager.element.scrollLeft+parseInt(h.table.columnManager.element.style.marginLeft)&&(h.table.rowManager.scrollHorizontal(t),h.table.columnManager.scrollHorizontal(t))})),l=!1,u=function(e){l&&clearTimeout(l),l=setTimeout((function(){m(r.value)}),d.table.options.headerFilterLiveFilterDelay)},t.modules.filter.headerElement=r,t.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",t.modules.filter.tagType=r.tagName.toLowerCase(),!1!==t.definition.headerFilterLiveFilter&&("autocomplete"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter&&("autocomplete"!==t.definition.editor&&"tickCross"!==t.definition.editor||!0!==t.definition.headerFilter)&&(r.addEventListener("keyup",u),r.addEventListener("search",u),"number"==t.modules.filter.attrType&&r.addEventListener("change",(function(e){m(r.value)})),"text"==t.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=t.modules.filter.tagType&&"select"!=t.modules.filter.tagType&&"textarea"!=t.modules.filter.tagType||r.addEventListener("mousedown",(function(e){e.stopPropagation()}))),o.appendChild(r),t.contentElement.appendChild(o),n||d.headerFilterColumns.push(t)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",t.definition.title)}},{key:"hideHeaderFilterElements",value:function(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")}))}},{key:"showHeaderFilterElements",value:function(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")}))}},{key:"setHeaderFilterFocus",value:function(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())}},{key:"getHeaderFilterValue",value:function(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())}},{key:"setHeaderFilterValue",value:function(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()))}},{key:"reloadHeaderFilter",value:function(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()))}},{key:"refreshFilter",value:function(){this.tableInitialized&&("remote"===this.table.options.filterMode?this.reloadData():this.refreshData(!0))}},{key:"trackChanges",value:function(){this.changed=!0,this.dispatch("filter-changed")}},{key:"hasChanged",value:function(){var e=this.changed;return this.changed=!1,e}},{key:"setFilter",value:function(e,t,i,n){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:i,params:n}]),this.addFilter(e)}},{key:"addFilter",value:function(e,t,i,n){var o=this,a=!1;Array.isArray(e)||(e=[{field:e,type:t,value:i,params:n}]),e.forEach((function(e){(e=o.findFilter(e))&&(o.filterList.push(e),a=!0)})),a&&this.trackChanges()}},{key:"findFilter",value:function(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||{})}:r.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return r.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return r.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}},{key:"findSubFilters",value:function(e){var t=this,i=[];return e.forEach((function(e){(e=t.findFilter(e))&&i.push(e)})),!!i.length&&i}},{key:"getFilters",value:function(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))}},{key:"filtersToArray",value:function(e,t){var i=this,n=[];return e.forEach((function(e){var o;Array.isArray(e)?n.push(i.filtersToArray(e,t)):(o={field:e.field,type:e.type,value:e.value},t&&"function"==typeof o.type&&(o.type="function"),n.push(o))})),n}},{key:"getHeaderFilters",value:function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e}},{key:"removeFilter",value:function(t,i,n){var o=this;Array.isArray(t)||(t=[{field:t,type:i,value:n}]),t.forEach((function(t){var i=-1;(i="object"==e(t.field)?o.filterList.findIndex((function(e){return t===e})):o.filterList.findIndex((function(e){return t.field===e.field&&t.type===e.type&&t.value===e.value})))>-1?o.filterList.splice(i,1):console.warn("Filter Error - No matching filter type found, ignoring: ",t.type)})),this.trackChanges()}},{key:"clearFilter",value:function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.trackChanges()}},{key:"clearHeaderFilter",value:function(){var e=this;this.headerFilters={},this.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((function(t){void 0!==t.modules.filter.value&&delete t.modules.filter.value,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)})),this.trackChanges()}},{key:"search",value:function(e,t,i,n){var o=this,a=[],r=[];return Array.isArray(t)||(t=[{field:t,type:i,value:n}]),t.forEach((function(e){(e=o.findFilter(e))&&r.push(e)})),this.table.rowManager.rows.forEach((function(t){var i=!0;r.forEach((function(e){o.filterRecurse(e,t.getData())||(i=!1)})),i&&a.push("data"===e?t.getData("data"):t.getComponent())})),a}},{key:"filter",value:function(e,t){var i=this,n=[],o=[];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((function(e){i.filterRow(e)&&n.push(e)})):n=e.slice(0),this.subscribedExternal("dataFiltered")&&(n.forEach((function(e){o.push(e.getComponent())})),this.dispatchExternal("dataFiltered",this.getFilters(!0),o)),n}},{key:"filterRow",value:function(e,t){var i=this,n=!0,o=e.getData();for(var a in this.filterList.forEach((function(e){i.filterRecurse(e,o)||(n=!1)})),this.headerFilters)this.headerFilters[a].func(o)||(n=!1);return n}},{key:"filterRecurse",value:function(e,t){var i=this,n=!1;return Array.isArray(e)?e.forEach((function(e){i.filterRecurse(e,t)&&(n=!0)})):n=e.func(t),n}}]),r}(V);ye.moduleName="filter",ye.filters=be;var we={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 n,o,a,r,s=parseFloat(e.getValue()),l="",u=t.decimal||".",c=t.thousand||",",h=t.negativeSign||"-",d=t.symbol||"",m=!!t.symbolAfter,p=void 0!==t.precision?t.precision:2;if(isNaN(s))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));if(s<0&&(s=Math.abs(s),l=h),n=!1!==p?s.toFixed(p):s,o=(n=String(n).split("."))[0],a=n.length>1?u+n[1]:"",!1!==t.thousand)for(r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+c+"$2");return m?l+o+a+d:l+d+o+a},link:function(t,i,n){var o,a=t.getValue(),r=i.urlPrefix||"",s=i.download,l=a,u=document.createElement("a");if(i.labelField&&(o=t.getData(),l=function t(i,n){var o=n[i.shift()];return i.length&&"object"===e(o)?t(i,o):o}(i.labelField.split(this.table.options.nestedFieldSeparator),o)),i.label)switch(e(i.label)){case"string":l=i.label;break;case"function":l=i.label(t)}if(l){if(i.urlField&&(a=(o=t.getData())[i.urlField]),i.url)switch(e(i.url)){case"string":a=i.url;break;case"function":a=i.url(t)}return u.setAttribute("href",r+a),i.target&&u.setAttribute("target",i.target),i.download&&(s="function"==typeof s?s(t):!0===s?"":s,u.setAttribute("download",s)),u.innerHTML=this.emptyToSpace(this.sanitizeHTML(l)),u}return" "},image:function(t,i,n){var o=document.createElement("img"),a=t.getValue();switch(i.urlPrefix&&(a=i.urlPrefix+t.getValue()),i.urlSuffix&&(a+=i.urlSuffix),o.setAttribute("src",a),e(i.height)){case"number":o.style.height=i.height+"px";break;case"string":o.style.height=i.height}switch(e(i.width)){case"number":o.style.width=i.width+"px";break;case"string":o.style.width=i.width}return o.addEventListener("load",(function(){t.getRow().normalizeHeight()})),o},tickCross:function(e,t,i){var n=e.getValue(),o=e.getElement(),a=t.allowEmpty,r=t.allowTruthy,s=Object.keys(t).includes("trueValue"),l=void 0!==t.tickElement?t.tickElement:'',u=void 0!==t.crossElement?t.crossElement:'';return s&&n===t.trueValue||!s&&(r&&n||!0===n||"true"===n||"True"===n||1===n||"1"===n)?(o.setAttribute("aria-checked",!0),l||""):!a||"null"!==n&&""!==n&&null!=n?(o.setAttribute("aria-checked",!1),u||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var n,o=window.DateTime||luxon.DateTime,a=t.inputFormat||"yyyy-MM-dd HH:mm:ss",r=t.outputFormat||"dd/MM/yyyy HH:mm:ss",s=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",l=e.getValue();if(void 0!==o)return(n=o.isDateTime(l)?l:"iso"===a?o.fromISO(String(l)):o.fromFormat(String(l),a)).isValid?(t.timezone&&(n=n.setZone(t.timezone)),n.toFormat(r)):!0!==s&&l?"function"==typeof s?s(l):s:l;console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var n,o=window.DateTime||luxon.DateTime,a=t.inputFormat||"yyyy-MM-dd HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",s=void 0!==t.suffix&&t.suffix,l=void 0!==t.unit?t.unit:"days",u=void 0!==t.humanize&&t.humanize,c=void 0!==t.date?t.date:o.now(),h=e.getValue();if(void 0!==o)return(n=o.isDateTime(h)?h:"iso"===a?o.fromISO(String(h)):o.fromFormat(String(h),a)).isValid?u?n.diff(c,l).toHuman()+(s?" "+s:""):parseInt(n.diff(c,l)[l])+(s?" "+s:""):!0===r?h:"function"==typeof r?r(h):r;console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js")},lookup:function(e,t,i){var n=e.getValue();return void 0===t[n]?(console.warn("Missing display value for "+n),n):t[n]},star:function(e,t,i){var n=e.getValue(),o=e.getElement(),a=t&&t.stars?t.stars:5,r=document.createElement("span"),s=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",s.setAttribute("width","14"),s.setAttribute("height","14"),s.setAttribute("viewBox","0 0 512 512"),s.setAttribute("xml:space","preserve"),s.style.padding="0 1px",n=n&&!isNaN(n)?parseInt(n):0,n=Math.max(0,Math.min(n,a));for(var l=1;l<=a;l++){var u=s.cloneNode(!0);u.innerHTML=l<=n?'':'',r.appendChild(u)}return o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.setAttribute("aria-label",n),r},traffic:function(t,i,n){var o,a,r=this.sanitizeHTML(t.getValue())||0,s=document.createElement("span"),l=i&&i.max?i.max:100,u=i&&i.min?i.min:0,c=i&&void 0!==i.color?i.color:["red","orange","green"],h="#666666";if(!isNaN(r)&&void 0!==t.getValue()){switch(s.classList.add("tabulator-traffic-light"),a=parseFloat(r)<=l?parseFloat(r):l,a=parseFloat(a)>=u?parseFloat(a):u,o=(l-u)/100,a=Math.round((a-u)/o),e(c)){case"string":h=c;break;case"function":h=c(r);break;case"object":if(Array.isArray(c)){var d=100/c.length,m=Math.floor(a/d);m=Math.min(m,c.length-1),h=c[m=Math.max(m,0)];break}}return s.style.backgroundColor=h,s}},progress:function(t,i,n){var o,a,r,s,l,u=this.sanitizeHTML(t.getValue())||0,c=t.getElement(),h=i&&i.max?i.max:100,d=i&&i.min?i.min:0,m=i&&i.legendAlign?i.legendAlign:"center";switch(a=parseFloat(u)<=h?parseFloat(u):h,a=parseFloat(a)>=d?parseFloat(a):d,o=(h-d)/100,a=Math.round((a-d)/o),e(i.color)){case"string":r=i.color;break;case"function":r=i.color(u);break;case"object":if(Array.isArray(i.color)){var p=100/i.color.length,f=Math.floor(a/p);f=Math.min(f,i.color.length-1),f=Math.max(f,0),r=i.color[f];break}default:r="#2DC214"}switch(e(i.legend)){case"string":s=i.legend;break;case"function":s=i.legend(u);break;case"boolean":s=u;break;default:s=!1}switch(e(i.legendColor)){case"string":l=i.legendColor;break;case"function":l=i.legendColor(u);break;case"object":if(Array.isArray(i.legendColor)){p=100/i.legendColor.length,f=Math.floor(a/p);f=Math.min(f,i.legendColor.length-1),f=Math.max(f,0),l=i.legendColor[f]}break;default:l="#000"}c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a);var g=document.createElement("div");g.style.display="inline-block",g.style.position="absolute",g.style.width=a+"%",g.style.backgroundColor=r,g.style.height="100%",g.setAttribute("data-max",h),g.setAttribute("data-min",d);var v=document.createElement("div");if(v.style.position="relative",v.style.width="100%",v.style.height="100%",s){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=s}return n((function(){if(!(t instanceof y)){var e=document.createElement("div");e.style.position="absolute",e.style.top="4px",e.style.bottom="4px",e.style.left="4px",e.style.right="4px",c.appendChild(e),c=e}c.appendChild(v),v.appendChild(g),s&&v.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){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1||""},handle:function(e,t,i){return e.getElement().classList.add("tabulator-row-handle"),"
"},responsiveCollapse:function(e,t,i){var n=document.createElement("div"),o=e.getRow()._row.modules.responsiveLayout;function a(e){var t=o.element;o.open=e,t&&(o.open?(n.classList.add("open"),t.style.display=""):(n.classList.remove("open"),t.style.display="none"))}return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="+-",e.getElement().classList.add("tabulator-row-handle"),n.addEventListener("click",(function(e){e.stopImmediatePropagation(),a(!o.open)})),a(o.open),n},rowSelection:function(e,t,i){var n=this,o=document.createElement("input"),a=!1;if(o.type="checkbox",o.setAttribute("aria-label","Select Row"),this.table.modExists("selectRow",!0))if(o.addEventListener("click",(function(e){e.stopPropagation()})),"function"==typeof e.getRow){var r=e.getRow();r instanceof L?(o.addEventListener("change",(function(e){"click"===n.table.options.selectableRangeMode&&a?a=!1:r.toggleSelect()})),"click"===this.table.options.selectableRangeMode&&o.addEventListener("click",(function(e){a=!0,n.table.modules.selectRow.handleComplexRowClick(r._row,e)})),o.checked=r.isSelected&&r.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(r,o)):o=""}else o.addEventListener("change",(function(e){n.table.modules.selectRow.selectedRows.length?n.table.deselectRow():n.table.selectRow(t.rowRange)})),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},Ce=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).registerColumnOption("formatter"),i.registerColumnOption("formatterParams"),i.registerColumnOption("formatterPrint"),i.registerColumnOption("formatterPrintParams"),i.registerColumnOption("formatterClipboard"),i.registerColumnOption("formatterClipboardParams"),i.registerColumnOption("formatterHtmlOutput"),i.registerColumnOption("formatterHtmlOutputParams"),i.registerColumnOption("titleFormatter"),i.registerColumnOption("titleFormatterParams"),i}return o(r,[{key:"initialize",value:function(){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))}},{key:"initializeColumn",value:function(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"))}},{key:"lookupFormatter",value:function(t,i){var n={params:t.definition["formatter"+i+"Params"]||{}},o=t.definition["formatter"+i];switch(e(o)){case"string":r.formatters[o]?n.formatter=r.formatters[o]:(console.warn("Formatter Error - No such formatter found: ",o),n.formatter=r.formatters.plaintext);break;case"function":n.formatter=o;break;default:n.formatter=r.formatters.plaintext}return n}},{key:"cellRendered",value:function(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)}},{key:"formatHeader",value:function(e,t,i){var n,o,a,r;return e.definition.titleFormatter?(n=this.getFormatter(e.definition.titleFormatter),a=function(t){e.titleFormatterRendered=t},r={getValue:function(){return t},getElement:function(){return i}},o="function"==typeof(o=e.definition.titleFormatterParams||{})?o():o,n.call(this,r,o,a)):t}},{key:"formatValue",value:function(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}))}},{key:"formatExportValue",value:function(e,t){var i,n=e.column.modules.format[t];if(n){return i="function"==typeof n.params?n.params(component):n.params,n.formatter.call(this,e.getComponent(),i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}return this.formatValue(e)}},{key:"sanitizeHTML",value:function(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,(function(e){return t[e]}))}return e}},{key:"emptyToSpace",value:function(e){return null==e||""===e?" ":e}},{key:"getFormatter",value:function(t){switch(e(t)){case"string":r.formatters[t]?t=r.formatters[t]:(console.warn("Formatter Error - No such formatter found: ",t),t=r.formatters.plaintext);break;case"function":t=t;break;default:t=r.formatters.plaintext}return t}}]),r}(V);Ce.moduleName="format",Ce.formatters=we;var ke=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).leftColumns=[],o.rightColumns=[],o.leftMargin=0,o.rightMargin=0,o.rightPadding=0,o.initializationMode="left",o.active=!1,o.scrollEndTimer=!1,o.blocked=!0,o.registerColumnOption("frozen"),o}return o(n,[{key:"reset",value:function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0}},{key:"initialize",value:function(){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("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("columns-loading",this.reset.bind(this)),this.subscribe("column-add",this.reinitializeColumns.bind(this)),this.subscribe("column-delete",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))}},{key:"blockLayout",value:function(){this.blocked=!0}},{key:"unblockLayout",value:function(){this.blocked=!1}},{key:"layoutCell",value:function(e){this.layoutElement(e.element,e.column)}},{key:"reinitializeColumns",value:function(){var e=this;this.reset(),this.table.columnManager.columnsByIndex.forEach((function(t){e.initializeColumn(t)}))}},{key:"initializeColumn",value:function(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")}},{key:"frozenCheck",value:function(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}},{key:"scrollHorizontal",value:function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),e=this.table.rowManager.getVisibleRows(),this.calcMargins(!0),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach((function(e){"row"===e.type&&t.layoutRow(e)})))}},{key:"calcMargins",value:function(e){e||(this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.rowManager.tableElement.style.marginRight=this.rightMargin),this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft}},{key:"layoutCalcRows",value:function(){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()))}},{key:"layoutGroupCalcs",value:function(e){var t=this;e.forEach((function(e){e.calcs.top&&t.layoutRow(e.calcs.top),e.calcs.bottom&&t.layoutRow(e.calcs.bottom),e.groupList&&e.groupList.length&&t.layoutGroupCalcs(e.groupList&&e.groupList)}))}},{key:"layoutColumnPosition",value:function(e){var t=this,i=[],n=0,o=0;this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.table.columnManager.element.style.paddingRight=this.rightMargin,this.leftColumns.forEach((function(o,a){if(o.modules.frozen.margin=n+t.table.columnManager.scrollLeft+"px",o.visible&&(n+=o.getWidth()),a==t.leftColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup){var r=t.getColGroupParentElement(o);i.includes(r)||(t.layoutElement(r,o),i.push(r)),o.modules.frozen.edge&&r.classList.add("tabulator-frozen-"+o.modules.frozen.position)}else t.layoutElement(o.getElement(),o);e&&o.cells.forEach((function(e){t.layoutElement(e.getElement(!0),o)}))})),this.rightColumns.forEach((function(i,n){i.visible&&(o+=i.getWidth()),i.modules.frozen.margin=t.rightPadding-o+"px",n==t.rightColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup?t.layoutElement(t.getColGroupParentElement(i),i):t.layoutElement(i.getElement(),i),e&&i.cells.forEach((function(e){t.layoutElement(e.getElement(!0),i)}))}))}},{key:"getColGroupParentElement",value:function(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()}},{key:"layout",value:function(){var e=this,t=[];this.active&&!this.blocked&&(this.calcMargins(),this.layoutColumnPosition(),t=this.table.rowManager.getVisibleRows(),this.table.rowManager.getDisplayRows().filter((function(e){return!t.includes(e)})).forEach((function(e){e.deinitialize()})),t.forEach((function(t){"row"===t.type&&e.layoutRow(t)})),this.layoutCalcRows())}},{key:"layoutRow",value:function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,"fitDataFill"===this.table.options.layout&&this.rightColumns.length&&(this.table.rowManager.getTableElement().style.minWidth="calc(100% - "+this.rightMargin+")"),this.leftColumns.forEach((function(i){var n=e.getCell(i);n&&t.layoutElement(n.getElement(!0),i)})),this.rightColumns.forEach((function(i){var n=e.getCell(i);n&&t.layoutElement(n.getElement(!0),i)}))}},{key:"layoutElement",value:function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))}},{key:"_calcSpace",value:function(e,t){for(var i=0,n=0;n-1}},{key:"isFrozen",value:function(){return!!this.rows.length}},{key:"visibleRows",value:function(e,t){return this.rows.forEach((function(e){t.push(e)})),t}},{key:"getRows",value:function(e){var t=e.slice(0);return this.rows.forEach((function(e){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t}},{key:"freezeRow",value:function(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.table.rowManager.adjustTableSize(),this.rows.push(e),this.refreshData(!1,"display"),this.styleRows())}},{key:"unfreezeRow",value:function(e){this.rows.indexOf(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")}},{key:"detachRow",value:function(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)}}},{key:"styleRows",value:function(e){var t=this;this.rows.forEach((function(e,i){t.table.rowManager.styleRow(e,i)}))}}]),n}(V);Ee.moduleName="frozenRows";var Re=function(){function e(i){return t(this,e),this._group=i,this.type="GroupComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._group.groupManager.table.componentFunctionBinder.handle("row",e._group,t)}})}return o(e,[{key:"getKey",value:function(){return this._group.key}},{key:"getField",value:function(){return this._group.field}},{key:"getElement",value:function(){return this._group.element}},{key:"getRows",value:function(){return this._group.getRows(!0)}},{key:"getSubGroups",value:function(){return this._group.getSubGroups(!0)}},{key:"getParentGroup",value:function(){return!!this._group.parent&&this._group.parent.getComponent()}},{key:"isVisible",value:function(){return this._group.visible}},{key:"show",value:function(){this._group.show()}},{key:"hide",value:function(){this._group.hide()}},{key:"toggle",value:function(){this._group.toggleVisibility()}},{key:"_getSelf",value:function(){return this._group}},{key:"getTable",value:function(){return this._group.groupManager.table}}]),e}(),xe=function(){function e(i,n,o,a,r,s,l){t(this,e),this.groupManager=i,this.parent=n,this.key=a,this.level=o,this.field=r,this.hasSubGroups=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.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)}},{key:"scrollHeader",value:function(e){this.arrowElement&&(this.arrowElement.style.marginLeft=e,this.groupList.forEach((function(t){t.scrollHeader(e)})))}},{key:"getRowIndex",value:function(e){}},{key:"conformRowData",value:function(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}},{key:"removeRow",value:function(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.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))}},{key:"removeGroup",value:function(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)))}},{key:"getHeadersAndRows",value:function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach((function(i){t=t.concat(i.getHeadersAndRows(e))})):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t}},{key:"getData",value:function(e,t){var i=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach((function(e){i.push(e.getData(t||"data"))})),i}},{key:"getRowCount",value:function(){var e=0;return this.groupList.length?this.groupList.forEach((function(t){e+=t.getRowCount()})):e=this.rows.length,e}},{key:"toggleVisibility",value:function(){this.visible?this.hide():this.show()}},{key:"hide",value:function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((function(e){e.getHeadersAndRows().forEach((function(e){e.detachElement()}))})):this.rows.forEach((function(e){var t=e.getElement();t.parentNode.removeChild(t)})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}},{key:"show",value:function(){if(this.visible=!0,"classic"!=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((function(t){t.getHeadersAndRows().forEach((function(t){var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i}))})):this.rows.forEach((function(t){var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!0)}},{key:"_visSet",value:function(){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()))}},{key:"getRowGroup",value:function(e){var t=!1;return this.groupList.length?this.groupList.forEach((function(i){var n=i.getRowGroup(e);n&&(t=n)})):this.rows.find((function(t){return t===e}))&&(t=this),t}},{key:"getSubGroups",value:function(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"getRows",value:function(e){var t=[];return this.rows.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"generateGroupHeaderContents",value:function(){var e=[];for(this.rows.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)}},{key:"getPath",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.unshift(this.key),this.parent&&this.parent.getPath(e),e}},{key:"getElement",value:function(){return this.elementContents?this.element:this.generateElement()}},{key:"generateElement",value:function(){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;en.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",(function(t,i){e.headerGenerator[0]=function(e,n,o){return(void 0===e?"":e)+"("+n+" "+(1===n?t:i.groups.items)+")"}})),this.groupIDLookups=[],Array.isArray(t)||t)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((function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(t)||(t=[t]),t.forEach((function(t,i){var n,o;n="function"==typeof t?t:(o=e.table.columnManager.getColumnByField(t))?function(e){return o.getFieldValue(e)}:function(e){return e[t]},e.groupIDLookups.push({field:"function"!=typeof t&&t,func:n,values:!!e.allowedValues&&e.allowedValues[i]})})),i&&(Array.isArray(i)||(i=[i]),i.forEach((function(e){})),this.startOpen=i),n&&(this.headerGenerator=Array.isArray(n)?n:[n])}}},{key:"rowSample",value:function(e,t){var i=this.getGroups(!1)[0];return t.push(i.getRows(!1)[0]),t}},{key:"virtualRenderFill",value:function(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();t=t.filter((function(e){return"group"!==e.type})),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}},{key:"rowAddingIndex",value:function(e,t,i){this.assignRowToGroup(e);var n=e.modules.group.rows;return n.length>1&&(!t||t&&-1==n.indexOf(t)?i?n[0]!==e&&(t=n[0],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):n[n.length-1]!==e&&(t=n[n.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}},{key:"trackChanges",value:function(){this.dispatch("group-changed")}},{key:"setGroupBy",value:function(e){this.table.options.groupBy=e,this.initialized?this.configureGroupSetup():this.initialize(),this.refreshData(),this.trackChanges()}},{key:"setGroupValues",value:function(e){this.table.options.groupValues=e,this.configureGroupSetup(),this.refreshData(),this.trackChanges()}},{key:"setGroupStartOpen",value:function(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")}},{key:"setGroupHeader",value:function(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")}},{key:"userGetGroups",value:function(e){return this.getGroups(!0)}},{key:"userGetGroupedData",value:function(){return this.table.options.groupBy?this.getGroupedData():this.getData()}},{key:"rowGetGroup",value:function(e){return!!e.modules.group&&e.modules.group.getComponent()}},{key:"rowMoving",value:function(e,t,i){!i&&t instanceof xe&&(t=this.table.rowManager.prevDisplayRow(e)||t);var n=t instanceof xe?t:t.modules.group,o=e instanceof xe?e:e.modules.group;n===o?this.table.rowManager.moveRowInArray(n.rows,e,t,i):(o&&o.removeRow(e),n.insertRow(e,t,i))}},{key:"rowDeleting",value:function(e){e.modules.group&&e.modules.group.removeRow(e)}},{key:"rowsUpdated",value:function(e){this.updateGroupRows(!0)}},{key:"cellUpdated",value:function(e){this.reassignRowToGroup(e.row)}},{key:"setDisplayIndex",value:function(e){this.displayIndex=e}},{key:"getDisplayIndex",value:function(){return this.displayIndex}},{key:"getRows",value:function(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)}},{key:"getGroups",value:function(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"getChildGroups",value:function(e){var t=this,i=[];return e||(e=this),e.groupList.forEach((function(e){e.groupList.length?i=i.concat(t.getChildGroups(e)):i.push(e)})),i}},{key:"wipe",value:function(){this.groupList.forEach((function(e){e.wipe()}))}},{key:"pullGroupListData",value:function(e){var t=this,i=[];return e.forEach((function(e){var n={level:0,rowCount:0,headerContent:""},o=[];e.hasSubGroups?(o=t.pullGroupListData(e.groupList),n.level=e.level,n.rowCount=o.length-e.groupList.length,n.headerContent=e.generator(e.key,n.rowCount,e.rows,e),i.push(n),i=i.concat(o)):(n.level=e.level,n.headerContent=e.generator(e.key,e.rows.length,e.rows,e),n.rowCount=e.getRows().length,i.push(n),e.getRows().forEach((function(e){i.push(e.getData("data"))})))})),i}},{key:"getGroupedData",value:function(){return this.pullGroupListData(this.groupList)}},{key:"getRowGroup",value:function(e){var t=!1;return this.groupList.forEach((function(i){var n=i.getRowGroup(e);n&&(t=n)})),t}},{key:"countGroups",value:function(){return this.groupList.length}},{key:"generateGroups",value:function(e){var t=this,i=this.groups;this.groups={},this.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((function(e){t.createGroup(e,0,i)})),e.forEach((function(e){t.assignRowToExistingGroup(e,i)}))):e.forEach((function(e){t.assignRowToGroup(e,i)}))}},{key:"createGroup",value:function(e,t,i){var n,o=t+"_"+e;i=i||[],n=new xe(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],i[o]),this.groups[o]=n,this.groupList.push(n)}},{key:"assignRowToExistingGroup",value:function(e,t){var i="0_"+this.groupIDLookups[0].func(e.getData());this.groups[i]&&this.groups[i].addRow(e)}},{key:"assignRowToGroup",value:function(e,t){var i=this.groupIDLookups[0].func(e.getData()),n=!this.groups["0_"+i];return n&&this.createGroup(i,0,t),this.groups["0_"+i].addRow(e),!n}},{key:"reassignRowToGroup",value:function(e){if("row"===e.type){var t=e.modules.group,i=t.getPath(),n=this.getExpectedPath(e);i.length==n.length&&i.every((function(e,t){return e===n[t]}))||(t.removeRow(e),this.assignRowToGroup(e,this.groups),this.refreshData(!0))}}},{key:"getExpectedPath",value:function(e){var t=[],i=e.getData();return this.groupIDLookups.forEach((function(e){t.push(e.func(i))})),t}},{key:"updateGroupRows",value:function(e){var t=[];return this.groupList.forEach((function(e){t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0,this.displayHandler),t}},{key:"scrollHeaders",value:function(e){"virtual"===this.table.options.renderHorizontal&&(e-=this.table.columnManager.renderer.vDomPadLeft),e+="px",this.groupList.forEach((function(t){t.scrollHeader(e)}))}},{key:"removeGroup",value:function(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))}}]),n}(V);Te.moduleName="groupRows";var Me=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).history=[],o.index=-1,o.registerTableOption("history",!1),o}return o(n,[{key:"initialize",value:function(){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))}},{key:"rowMoved",value:function(e,t,i){this.action("rowMove",e,{posFrom:this.table.rowManager.getRowPosition(e),posTo:this.table.rowManager.getRowPosition(t),to:t,after:i})}},{key:"rowAdded",value:function(e,t,i,n){this.action("rowAdd",e,{data:t,pos:i,index:n})}},{key:"rowDeleted",value:function(e){var t,i;this.table.options.groupBy?(t=(i=e.getComponent().getGroup().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})}},{key:"cellUpdated",value:function(e){this.action("cellEdit",e,{oldValue:e.oldValue,newValue:e.value})}},{key:"clear",value:function(){this.history=[],this.index=-1}},{key:"action",value:function(e,t,i){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:i}),this.index++}},{key:"getHistoryUndoSize",value:function(){return this.index+1}},{key:"getHistoryRedoSize",value:function(){return this.history.length-(this.index+1)}},{key:"clearComponentHistory",value:function(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))}},{key:"undo",value:function(){if(this.index>-1){var 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("History Undo Error - No more history to undo"),!1}},{key:"redo",value:function(){if(this.history.length-1>this.index){this.index++;var 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("History Redo Error - No more history to redo"),!1}},{key:"_rebindRow",value:function(e,t){this.history.forEach((function(i){if(i.component instanceof D)i.component===e&&(i.component=t);else if(i.component instanceof w&&i.component.row===e){var n=i.component.column.getField();n&&(i.component=t.getCell(n))}}))}}]),n}(V);Me.moduleName="history",Me.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue),e.component.cellRendered()},rowAdd:function(e){e.component.deleteActual()},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)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},Me.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)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}};var Le=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).fieldIndex=[],i.hasIndex=!1,i}return o(r,[{key:"initialize",value:function(){this.tableElementCheck()}},{key:"tableElementCheck",value:function(){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."))}},{key:"parseTable",value:function(){var e=this.table.originalElement,t=this.table.options,i=(t.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],o=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),n=n?n.getElementsByTagName("tr"):[],this._extractOptions(e,t),i.length?this._extractHeaders(i,n):this._generateBlankHeaders(i,n);for(var a=0;a-1&&e.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)}},{key:"clearBindings",value:function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)}},{key:"checkBinding",value:function(e,t){var i=this,n=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach((function(e){-1==i.pressedKeys.indexOf(e)&&(n=!1)})),n&&t.action.call(this,e),!0)}}]),r}(V);Fe.moduleName="keybindings",Fe.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:["ctrl + 90","meta + 90"],redo:["ctrl + 89","meta + 89"],copyToClipboard:["ctrl + 67","meta + 89"]},Fe.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;t.element.scrollHeight;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,n=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i<=n?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)},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)}};var ze=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).menuContainer=null,o.nestedMenuBlock=!1,o.currentComponent=null,o.rootPopup=null,o.columnSubscribers={},o.registerTableOption("menuContainer",void 0),o.registerTableOption("rowContextMenu",!1),o.registerTableOption("rowClickMenu",!1),o.registerTableOption("groupContextMenu",!1),o.registerTableOption("groupClickMenu",!1),o.registerColumnOption("headerContextMenu"),o.registerColumnOption("headerClickMenu"),o.registerColumnOption("headerMenu"),o.registerColumnOption("headerMenuIcon"),o.registerColumnOption("contextMenu"),o.registerColumnOption("clickMenu"),o}return o(n,[{key:"initialize",value:function(){this.deprecationCheck(),this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}},{key:"deprecationCheck",value:function(){void 0!==this.table.options.menuContainer&&(console.warn("Use of the menuContainer option is now deprecated. Please use the popupContainer option instead"),this.table.options.popupContainer=this.table.options.menuContainer)}},{key:"initializeRowWatchers",value:function(){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))}},{key:"initializeGroupWatchers",value:function(){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))}},{key:"initializeColumn",value:function(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.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))}},{key:"initializeColumnHeaderMenu",value:function(e){var t,i=this,n=e.definition.headerMenuIcon;(t=document.createElement("span")).classList.add("tabulator-header-popup-button"),n?("function"==typeof n&&(n=n(e.getComponent())),n instanceof HTMLElement?t.appendChild(n):t.innerHTML=n):t.innerHTML="⋮",t.addEventListener("click",(function(t){t.stopPropagation(),t.preventDefault(),i.loadMenuEvent(e.definition.headerMenu,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}},{key:"loadMenuTableCellEvent",value:function(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadMenuEvent(i.column.definition[e],t,i)}},{key:"loadMenuTableColumnEvent",value:function(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadMenuEvent(i.definition[e],t,i)}},{key:"loadMenuEvent",value:function(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)}},{key:"loadMenu",value:function(e,t,i,n,o){var a,r=this,s=!(e instanceof MouseEvent),l=document.createElement("div");if(l.classList.add("tabulator-menu"),s||e.preventDefault(),i&&i.length){if(n)a=o.child(l);else{if(this.nestedMenuBlock){if(this.rootPopup)return}else this.nestedMenuBlock=setTimeout((function(){r.nestedMenuBlock=!1}),100);this.rootPopup&&this.rootPopup.hide(),this.rootPopup=a=this.popup(l)}i.forEach((function(e){var i=document.createElement("div"),n=e.label,o=e.disabled;e.separator?i.classList.add("tabulator-menu-separator"):(i.classList.add("tabulator-menu-item"),"function"==typeof n&&(n=n.call(r.table,t.getComponent())),n instanceof Node?i.appendChild(n):i.innerHTML=n,"function"==typeof o&&(o=o.call(r.table,t.getComponent())),o?(i.classList.add("tabulator-menu-item-disabled"),i.addEventListener("click",(function(e){e.stopPropagation()}))):e.menu&&e.menu.length?i.addEventListener("click",(function(n){n.stopPropagation(),r.loadMenu(n,t,e.menu,i,a)})):e.action&&i.addEventListener("click",(function(i){e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),l.appendChild(i)})),l.addEventListener("click",(function(e){r.rootPopup.hide()})),a.show(n||e),a===this.rootPopup&&(this.rootPopup.hideOnBlur((function(){r.rootPopup=null,r.currentComponent&&(r.dispatchExternal("menuClosed",r.currentComponent.getComponent()),r.currentComponent=null)})),this.currentComponent=t,this.dispatchExternal("menuOpened",t.getComponent()))}}}]),n}(V);ze.moduleName="menu";var He=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).placeholderElement=o.createPlaceholderElement(),o.hoverElement=!1,o.checkTimeout=!1,o.checkPeriod=250,o.moving=!1,o.toCol=!1,o.toColAfter=!1,o.startX=0,o.autoScrollMargin=40,o.autoScrollStep=5,o.autoScrollTimeout=!1,o.touchMove=!1,o.moveHover=o.moveHover.bind(l(o)),o.endMove=o.endMove.bind(l(o)),o.registerTableOption("movableColumns",!1),o}return o(n,[{key:"createPlaceholderElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e}},{key:"initialize",value:function(){this.table.options.movableColumns&&this.subscribe("column-init",this.initializeColumn.bind(this))}},{key:"initializeColumn",value:function(e){var t,i=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===i.moving.parent&&((i.touchMove?n.touches[0].pageX:n.pageX)-k.elOffset(t).left+i.table.columnManager.element.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=n}},{key:"bindTouchEvents",value:function(e){var t,i,n,o,a,r,s=this,l=e.getElement(),u=!1;l.addEventListener("touchstart",(function(l){s.checkTimeout=setTimeout((function(){s.touchMove=!0,t=e.nextColumn(),n=t?t.getWidth()/2:0,i=e.prevColumn(),o=i?i.getWidth()/2:0,a=0,r=0,u=!1,s.startMove(l,e)}),s.checkPeriod)}),{passive:!0}),l.addEventListener("touchmove",(function(l){var c,h;s.moving&&(s.moveHover(l),u||(u=l.touches[0].pageX),(c=l.touches[0].pageX-u)>0?t&&c-a>n&&(h=t)!==e&&(u=l.touches[0].pageX,h.getElement().parentNode.insertBefore(s.placeholderElement,h.getElement().nextSibling),s.moveColumn(h,!0)):i&&-c-r>o&&(h=i)!==e&&(u=l.touches[0].pageX,h.getElement().parentNode.insertBefore(s.placeholderElement,h.getElement()),s.moveColumn(h,!1)),h&&(t=h.nextColumn(),a=n,n=t?t.getWidth()/2:0,i=h.prevColumn(),r=o,o=i?i.getWidth()/2:0))}),{passive:!0}),l.addEventListener("touchend",(function(e){s.checkTimeout&&clearTimeout(s.checkTimeout),s.moving&&s.endMove(e)}))}},{key:"startMove",value:function(e,t){var i=t.getElement(),n=this.table.columnManager.getElement(),o=this.table.columnManager.getHeadersElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-k.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"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom=n.clientHeight-o.offsetHeight+"px",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)}},{key:"_bindMouseMove",value:function(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)}))}},{key:"_unbindMouseMove",value:function(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)}))}},{key:"moveColumn",value:function(e,t){var i=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach((function(e,t){var n=e.getElement(!0);n.parentNode&&i[t]&&n.parentNode.insertBefore(i[t].getElement(),n.nextSibling)})):e.getCells().forEach((function(e,t){var n=e.getElement(!0);n.parentNode&&i[t]&&n.parentNode.insertBefore(i[t].getElement(),n)}))}},{key:"endMove",value:function(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)))}},{key:"moveHover",value:function(e){var t,i=this,n=this.table.columnManager.getElement(),o=n.scrollLeft,a=(this.touchMove?e.touches[0].pageX:e.pageX)-k.elOffset(n).left+o;this.hoverElement.style.left=a-this.startX+"px",a-oe.getHeight()/2?t.toRow===e&&t.toRowAfter||((n=e.getElement()).parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(n=e.getElement()).previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=i}},{key:"initializeRow",value:function(e){var t,i=this,n={};n.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),n.mousemove=function(t){var n=e.getElement();t.pageY-k.elOffset(n).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||(n.parentNode.insertBefore(i.placeholderElement,n.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(n.parentNode.insertBefore(i.placeholderElement,n),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=n}},{key:"initializeColumn",value:function(e){e.definition.rowHandle&&!1!==this.table.options.movableRows&&(this.hasHandle=!0)}},{key:"initializeCell",value:function(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)}}},{key:"bindTouchEvents",value:function(e,t){var i,n,o,a,r,s,l=this,u=!1;t.addEventListener("touchstart",(function(t){l.checkTimeout=setTimeout((function(){l.touchMove=!0,i=e.nextRow(),o=i?i.getHeight()/2:0,n=e.prevRow(),a=n?n.getHeight()/2:0,r=0,s=0,u=!1,l.startMove(t,e)}),l.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",(function(t){var c,h;l.moving&&(t.preventDefault(),l.moveHover(t),u||(u=t.touches[0].pageY),(c=t.touches[0].pageY-u)>0?i&&c-r>o&&(h=i)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveRow(h,!0)):n&&-c-s>a&&(h=n)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveRow(h,!1)),h&&(i=h.nextRow(),r=o,o=i?i.getHeight()/2:0,n=h.prevRow(),s=a,a=n?n.getHeight()/2:0))})),t.addEventListener("touchend",(function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&(l.endMove(e),l.touchMove=!1)}))}},{key:"_bindMouseMove",value:function(){this.table.rowManager.getDisplayRows().forEach((function(e){("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)}))}},{key:"_unbindMouseMove",value:function(){this.table.rowManager.getDisplayRows().forEach((function(e){("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)}))}},{key:"startMove",value:function(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)}},{key:"setStartPosition",value:function(e,t){var i,n,o=this.touchMove?e.touches[0].pageX:e.pageX,a=this.touchMove?e.touches[0].pageY:e.pageY;i=t.getElement(),this.connection?(n=i.getBoundingClientRect(),this.startX=n.left-o+window.pageXOffset,this.startY=n.top-a+window.pageYOffset):this.startY=a-i.getBoundingClientRect().top}},{key:"endMove",value:function(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()))}},{key:"moveRow",value:function(e,t){this.toRow=e,this.toRowAfter=t}},{key:"moveHover",value:function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)}},{key:"moveHoverTable",value:function(e){var t=this.table.rowManager.getElement(),i=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+i;this.hoverElement.style.top=n-this.startY+"px"}},{key:"moveHoverConnections",value:function(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"}},{key:"elementRowDrop",value:function(e,t,i){this.dispatchExternal("movableRowsElementDrop",e,t,!!i&&i.getComponent())}},{key:"connectToTables",value:function(e){var t,i=this;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((function(e){"string"==typeof e?i.connectionElements=i.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):i.connectionElements.push(e)})),this.connectionElements.forEach((function(e){var t=function(t){i.elementRowDrop(t,e,i.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")})))}},{key:"disconnectFromTables",value:function(){var e;this.connectionSelectorsTables&&(e=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStop",e),this.commsSend(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((function(e){e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent}))}},{key:"connect",value:function(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((function(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)}},{key:"disconnect",value:function(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((function(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")}},{key:"dropComplete",value:function(t,i,n){var o=!1;if(n){switch(e(this.table.options.movableRowsSender)){case"string":o=this.senders[this.table.options.movableRowsSender];break;case"function":o=this.table.options.movableRowsSender}o?o.call(this,this.moving.getComponent(),i?i.getComponent():void 0,t):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.dispatchExternal("movableRowsSent",this.moving.getComponent(),i?i.getComponent():void 0,t)}else this.dispatchExternal("movableRowsSentFailed",this.moving.getComponent(),i?i.getComponent():void 0,t);this.endMove()}},{key:"tableRowDrop",value:function(t,i){var n=!1,o=!1;switch(t.stopImmediatePropagation(),e(this.table.options.movableRowsReceiver)){case"string":n=this.receivers[this.table.options.movableRowsReceiver];break;case"function":n=this.table.options.movableRowsReceiver}n?o=n.call(this,this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),o?this.dispatchExternal("movableRowsReceived",this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable):this.dispatchExternal("movableRowsReceivedFailed",this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable),this.commsSend(this.connectedTable,"moveRow","dropcomplete",{row:i,success:o})}},{key:"commsReceived",value:function(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)}}}]),r}(V);_e.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)}},_e.prototype.senders={delete:function(e,t,i){e.delete()}},_e.moduleName="moveRow";var Oe=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).allowedTypes=["","data","edit","clipboard"],i.enabled=!0,i.registerColumnOption("mutator"),i.registerColumnOption("mutatorParams"),i.registerColumnOption("mutatorData"),i.registerColumnOption("mutatorDataParams"),i.registerColumnOption("mutatorEdit"),i.registerColumnOption("mutatorEditParams"),i.registerColumnOption("mutatorClipboard"),i.registerColumnOption("mutatorClipboardParams"),i.registerColumnOption("mutateLink"),i}return o(r,[{key:"initialize",value:function(){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))}},{key:"rowDataChanged",value:function(e,t,i){return this.transformRow(t,"data",i)}},{key:"initializeColumn",value:function(e){var t=this,i=!1,n={};this.allowedTypes.forEach((function(o){var a,r="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));e.definition[r]&&(a=t.lookupMutator(e.definition[r]))&&(i=!0,n[r]={mutator:a,params:e.definition[r+"Params"]||{}})})),i&&(e.modules.mutate=n)}},{key:"lookupMutator",value:function(t){var i=!1;switch(e(t)){case"string":r.mutators[t]?i=r.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":i=t}return i}},{key:"transformRow",value:function(e,t,i){var n,o="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse((function(a){var r,s,l;a.modules.mutate&&(r=a.modules.mutate[o]||a.modules.mutate.mutator||!1)&&(n=a.getFieldValue(void 0!==i?i:e),"data"!=t&&void 0===n||(l=a.getComponent(),s="function"==typeof r.params?r.params(n,e,t,l):r.params,a.setFieldValue(e,r.mutator(n,e,t,s,l))))})),e}},{key:"transformCell",value:function(e,t){if(e.column.modules.mutate){var i=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,n={};if(i)return n=Object.assign(n,e.row.getData()),e.column.setFieldValue(n,t),i.mutator(t,n,"edit",i.params,e.getComponent())}return t}},{key:"mutateLink",value:function(e){var t=e.column.definition.mutateLink;t&&(Array.isArray(t)||(t=[t]),t.forEach((function(t){var i=e.row.getCell(t);i&&i.setValue(i.getValue(),!0,!0)})))}},{key:"enable",value:function(){this.enabled=!0}},{key:"disable",value:function(){this.enabled=!1}}]),r}(V);Oe.moduleName="mutator",Oe.mutators={};var Ae={rows:function(e,t,i,n,o){var a=document.createElement("span"),r=document.createElement("span"),s=document.createElement("span"),l=document.createElement("span"),u=document.createElement("span"),c=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(function(e){r.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|of",(function(e){l.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|rows",(function(e){c.innerHTML=e})),n?(s.innerHTML=" "+t+"-"+Math.min(t+e-1,n)+" ",u.innerHTML=" "+n+" ",a.appendChild(r),a.appendChild(s),a.appendChild(l),a.appendChild(u),a.appendChild(c)):(s.innerHTML=" 0 ",a.appendChild(r),a.appendChild(s),a.appendChild(c)),a},pages:function(e,t,i,n,o){var a=document.createElement("span"),r=document.createElement("span"),s=document.createElement("span"),l=document.createElement("span"),u=document.createElement("span"),c=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(function(e){r.innerHTML=e})),s.innerHTML=" "+i+" ",this.table.modules.localize.langBind("pagination|counter|of",(function(e){l.innerHTML=e})),u.innerHTML=" "+o+" ",this.table.modules.localize.langBind("pagination|counter|pages",(function(e){c.innerHTML=e})),a.appendChild(r),a.appendChild(s),a.appendChild(l),a.appendChild(u),a.appendChild(c),a}},Be=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).mode="local",i.progressiveLoad=!1,i.element=null,i.pageCounterElement=null,i.pageCounter=null,i.size=0,i.page=1,i.count=5,i.max=1,i.remoteRowCountEstimate=null,i.displayIndex=0,i.initialLoad=!0,i.dataChanging=!1,i.pageSizes=[],i.registerTableOption("pagination",!1),i.registerTableOption("paginationMode","local"),i.registerTableOption("paginationSize",!1),i.registerTableOption("paginationInitialPage",1),i.registerTableOption("paginationCounter",!1),i.registerTableOption("paginationCounterElement",!1),i.registerTableOption("paginationButtonCount",5),i.registerTableOption("paginationSizeSelector",!1),i.registerTableOption("paginationElement",!1),i.registerTableOption("paginationAddRow","page"),i.registerTableOption("progressiveLoad",!1),i.registerTableOption("progressiveLoadDelay",0),i.registerTableOption("progressiveLoadScrollMargin",0),i.registerTableFunction("setMaxPage",i.setMaxPage.bind(l(i))),i.registerTableFunction("setPage",i.setPage.bind(l(i))),i.registerTableFunction("setPageToRow",i.userSetPageToRow.bind(l(i))),i.registerTableFunction("setPageSize",i.userSetPageSize.bind(l(i))),i.registerTableFunction("getPageSize",i.getPageSize.bind(l(i))),i.registerTableFunction("previousPage",i.previousPage.bind(l(i))),i.registerTableFunction("nextPage",i.nextPage.bind(l(i))),i.registerTableFunction("getPage",i.getPage.bind(l(i))),i.registerTableFunction("getPageMax",i.getPageMax.bind(l(i))),i.registerComponentFunction("row","pageTo",i.setPageToRow.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){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)))}},{key:"rowAddingPosition",value:function(e,t){var i,n=this.table.rowManager,o=n.getDisplayRows();return t?o.length?i=o[0]:n.activeRows.length&&(i=n.activeRows[n.activeRows.length-1],t=!1):o.length&&(i=o[o.length-1],t=!(o.lengththis.max&&(this.page=this.max)}},{key:"reset",value:function(e){this.initialLoad||("local"==this.mode||e)&&(this.page=1)}},{key:"setMaxPage",value:function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())}},{key:"setPage",value:function(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())}},{key:"setPageToRow",value:function(e){var t=this.table.rowManager.getDisplayRows(this.displayIndex-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()}},{key:"setPageSize",value:function(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e,this.dispatchExternal("pageSizeChanged",e)),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.trackChanges()}},{key:"_setPageCounter",value:function(t,i,n){var o;if(this.pageCounter)switch("remote"===this.mode&&(i=this.size,n=(this.page-1)*this.size+1,t=this.remoteRowCountEstimate),e(o=this.pageCounter.call(this,i,n,this.page,t,this.max))){case"object":if(o instanceof Node){for(;this.pageCounterElement.firstChild;)this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);this.pageCounterElement.appendChild(o)}else this.pageCounterElement.innerHTML="",null!=o&&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:",o);break;case"undefined":case"null":this.pageCounterElement.innerHTML="";break;default:this.pageCounterElement.innerHTML=o}}},{key:"_setPageButtons",value:function(){for(var e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),i=this.max-this.page+e+10&&o<=this.max&&this.pagesElement.appendChild(this._generatePageButton(o));this.footerRedraw()}},{key:"_generatePageButton",value:function(e){var t=this,i=document.createElement("button");return i.classList.add("tabulator-page"),e==this.page&&i.classList.add("active"),i.setAttribute("type","button"),i.setAttribute("role","button"),this.langBind("pagination|page_title",(function(t){i.setAttribute("aria-label",t+" "+e),i.setAttribute("title",t+" "+e)})),i.setAttribute("data-page",e),i.textContent=e,i.addEventListener("click",(function(i){t.setPage(e)})),i}},{key:"previousPage",value:function(){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())}},{key:"nextPage",value:function(){return this.page-1&&(o=o.slice(r),(i=o.indexOf(";"))>-1&&(o=o.slice(0,i)),n=o.replace(a+"=","")),!!n&&JSON.parse(n)}},Ne={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var n=new Date;n.setDate(n.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+n.toUTCString()}},Ve=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).mode="",o.id="",o.defWatcherBlock=!1,o.config={},o.readFunc=!1,o.writeFunc=!1,o.registerTableOption("persistence",!1),o.registerTableOption("persistenceID",""),o.registerTableOption("persistenceMode",!0),o.registerTableOption("persistenceReaderFunc",!1),o.registerTableOption("persistenceWriterFunc",!1),o}return o(n,[{key:"localStorageTest",value:function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}},{key:"initialize",value:function(){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:n.readers[this.table.options.persistenceReaderFunc]?this.readFunc=n.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):n.readers[this.mode]?this.readFunc=n.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:n.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=n.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):n.writers[this.mode]?this.writeFunc=n.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,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.retreiveData("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.retreiveData("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("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("layout-refreshed",this.eventSave.bind(this,"columns"))}this.registerTableFunction("getColumnLayout",this.getColumnLayout.bind(this)),this.registerTableFunction("setColumnLayout",this.setColumnLayout.bind(this))}},{key:"eventSave",value:function(e){this.config[e]&&this.save(e)}},{key:"tableBuilt",value:function(){var e,t;this.table.options;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)}},{key:"tableRedraw",value:function(e){e&&this.config.columns&&this.save("columns")}},{key:"getColumnLayout",value:function(){return this.parseColumns(this.table.columnManager.getColumns())}},{key:"setColumnLayout",value:function(e){return this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns,e)),!0}},{key:"initializeColumn",value:function(e){var t;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),(!0===this.config.columns?Object.keys(t):this.config.columns).forEach((function(e){var i=Object.getOwnPropertyDescriptor(t,e),n=t[e];i&&Object.defineProperty(t,e,{set:function(e){n=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),n}})})),this.defWatcherBlock=!1)}},{key:"load",value:function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}},{key:"retreiveData",value:function(e){return!!this.readFunc&&this.readFunc(this.id,e)}},{key:"mergeDefinition",value:function(e,t){var i=this,n=[];return(t=t||[]).forEach((function(t,o){var a,r=i._findColumn(e,t);r&&(!0===i.config.columns||null==i.config.columns?(a=Object.keys(r)).push("width"):a=i.config.columns,a.forEach((function(e){"columns"!==e&&void 0!==t[e]&&(r[e]=t[e])})),r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),n.push(r))})),e.forEach((function(e,o){i._findColumn(t,e)||(n.length>o?n.splice(o,0,e):n.push(e))})),n}},{key:"_findColumn",value:function(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}}))}},{key:"save",value:function(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"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)}},{key:"validateSorters",value:function(e){return e.forEach((function(e){e.column=e.field,delete e.field})),e}},{key:"getGroupConfig",value:function(){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}},{key:"getPageConfig",value:function(){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}},{key:"parseColumns",value:function(e){var t=this,i=[],n=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach((function(e){var o,a={},r=e.getDefinition();e.isGroup?(a.title=r.title,a.columns=t.parseColumns(e.getColumns())):(a.field=e.getField(),!0===t.config.columns||null==t.config.columns?(o=Object.keys(r)).push("width"):o=t.config.columns,o.forEach((function(t){switch(t){case"width":a.width=e.getWidth();break;case"visible":a.visible=e.visible;break;default:"function"!=typeof r[t]&&-1===n.indexOf(t)&&(a[t]=r[t])}}))),i.push(a)})),i}}]),n}(V);Ve.moduleName="persistence",Ve.moduleInitOrder=-10,Ve.readers=Ie,Ve.writers=Ne;var We=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).columnSubscribers={},o.registerTableOption("rowContextPopup",!1),o.registerTableOption("rowClickPopup",!1),o.registerTableOption("groupContextPopup",!1),o.registerTableOption("groupClickPopup",!1),o.registerColumnOption("headerContextPopup"),o.registerColumnOption("headerClickPopup"),o.registerColumnOption("headerPopup"),o.registerColumnOption("headerPopupIcon"),o.registerColumnOption("contextPopup"),o.registerColumnOption("clickPopup"),o}return o(n,[{key:"initialize",value:function(){this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}},{key:"initializeRowWatchers",value:function(){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))}},{key:"initializeGroupWatchers",value:function(){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))}},{key:"initializeColumn",value:function(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.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))}},{key:"initializeColumnHeaderPopup",value:function(e){var t,i=this,n=e.definition.headerPopupIcon;(t=document.createElement("span")).classList.add("tabulator-header-popup-button"),n?("function"==typeof n&&(n=n(e.getComponent())),n instanceof HTMLElement?t.appendChild(n):t.innerHTML=n):t.innerHTML="⋮",t.addEventListener("click",(function(t){t.stopPropagation(),t.preventDefault(),i.loadPopupEvent(e.definition.headerPopup,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}},{key:"loadPopupTableCellEvent",value:function(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadPopupEvent(i.column.definition[e],t,i)}},{key:"loadPopupTableColumnEvent",value:function(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadPopupEvent(i.definition[e],t,i)}},{key:"loadPopupEvent",value:function(e,t,i){var n;i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,t,i.getComponent(),(function(e){n=e})):e,this.loadPopup(t,i,e,n)}},{key:"loadPopup",value:function(e,t,i,n){var o,a,r=this,s=!(e instanceof MouseEvent);i instanceof HTMLElement?o=i:(o=document.createElement("div")).innerHTML=i,o.classList.add("tabulator-popup"),o.addEventListener("click",(function(e){e.stopPropagation()})),s||e.preventDefault(),a=this.popup(o),"function"==typeof n&&a.renderCallback(n),a.show(e).hideOnBlur((function(){r.dispatchExternal("popupClosed",t.getComponent())})),this.dispatchExternal("popupOpened",t.getComponent())}}]),n}(V);We.moduleName="popup";var je=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).element=!1,o.manualBlock=!1,o.registerTableOption("printAsHtml",!1),o.registerTableOption("printFormatter",!1),o.registerTableOption("printHeader",!1),o.registerTableOption("printFooter",!1),o.registerTableOption("printStyled",!0),o.registerTableOption("printRowRange","visible"),o.registerTableOption("printConfig",{}),o.registerColumnOption("print"),o.registerColumnOption("titlePrint"),o}return o(n,[{key:"initialize",value:function(){this.table.options.printAsHtml&&(window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}},{key:"replaceTable",value:function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(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))}},{key:"cleanup",value:function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")}},{key:"printFullscreen",value:function(e,t,i){var n,o,a=window.scrollX,r=window.scrollY,s=document.createElement("div"),l=document.createElement("div"),u=this.table.modules.export.genereateTable(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&&(s.classList.add("tabulator-print-header"),"string"==typeof(n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?s.innerHTML=n:s.appendChild(n),this.element.appendChild(s)),this.element.appendChild(u),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,u),window.print(),this.cleanup(),window.scrollTo(a,r),this.manualBlock=!1}}]),n}(V);je.moduleName="print";var Ge=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).data=!1,o.blocked=!1,o.origFuncs={},o.currentVersion=0,o.registerTableOption("reactiveData",!1),o}return o(n,[{key:"initialize",value:function(){this.table.options.reactiveData&&(this.subscribe("cell-value-save-before",this.block.bind(this)),this.subscribe("cell-value-save-after",this.unblock.bind(this)),this.subscribe("row-data-save-before",this.block.bind(this)),this.subscribe("row-data-save-after",this.unblock.bind(this)),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)))}},{key:"watchData",value:function(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 n=Array.from(arguments);return i.blocked||t!==i.currentVersion||n.forEach((function(e){i.table.rowManager.addRowActual(e,!1)})),i.origFuncs.push.apply(e,arguments)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var n=Array.from(arguments);return i.blocked||t!==i.currentVersion||n.forEach((function(e){i.table.rowManager.addRowActual(e,!0)})),i.origFuncs.unshift.apply(e,arguments)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var n;return i.blocked||t!==i.currentVersion||i.data.length&&(n=i.table.rowManager.getRowFromDataObject(i.data[0]))&&n.deleteActual(),i.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var n;return i.blocked||t!==i.currentVersion||i.data.length&&(n=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&n.deleteActual(),i.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var n,o=Array.from(arguments),a=o[0]<0?e.length+o[0]:o[0],r=o[1],s=!!o[2]&&o.slice(2);if(!i.blocked&&t===i.currentVersion){if(s&&((n=!!e[a]&&i.table.rowManager.getRowFromDataObject(e[a]))?s.forEach((function(e){i.table.rowManager.addRowActual(e,!0,n,!0)})):(s=s.slice().reverse()).forEach((function(e){i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(a,void 0===o[1]?o[1]:a+r);l.forEach((function(e,t){var n=i.table.rowManager.getRowFromDataObject(e);n&&n.deleteActual(t!==l.length-1)}))}(s||0!==r)&&i.table.rowManager.reRenderInPosition()}return i.origFuncs.splice.apply(e,arguments)}})}},{key:"unwatchData",value:function(){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})}},{key:"watchRow",value:function(e){var t=e.getData();for(var i in this.blocked=!0,t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e),this.blocked=!1}},{key:"watchTreeChildren",value:function(e){var t=arguments,i=e.getData()[this.table.options.dataTreeChildField],n={};function o(){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}i&&(n.push=i.push,Object.defineProperty(i,"push",{enumerable:!1,configurable:!0,value:function(){var e=n.push.apply(i,t);return o(),e}}),n.unshift=i.unshift,Object.defineProperty(i,"unshift",{enumerable:!1,configurable:!0,value:function(){var e=n.unshift.apply(i,t);return o(),e}}),n.shift=i.shift,Object.defineProperty(i,"shift",{enumerable:!1,configurable:!0,value:function(){var e=n.shift.call(i);return o(),e}}),n.pop=i.pop,Object.defineProperty(i,"pop",{enumerable:!1,configurable:!0,value:function(){var e=n.pop.call(i);return o(),e}}),n.splice=i.splice,Object.defineProperty(i,"splice",{enumerable:!1,configurable:!0,value:function(){var e=n.splice.apply(i,t);return o(),e}}))}},{key:"watchKey",value:function(e,t,i){var n=this,o=Object.getOwnPropertyDescriptor(t,i),a=t[i],r=this.currentVersion;Object.defineProperty(t,i,{set:function(t){if(a=t,!n.blocked&&r===n.currentVersion){var s={};s[i]=t,e.updateData(s)}o.set&&o.set(t)},get:function(){return o.get&&o.get(),a}})}},{key:"unwatchRow",value:function(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}},{key:"block",value:function(){this.blocked=!0}},{key:"unblock",value:function(){this.blocked=!1}}]),n}(V);Ge.moduleName="reactiveData";var Ue=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).startColumn=!1,o.startX=!1,o.startWidth=!1,o.latestX=!1,o.handle=null,o.initialNextColumn=null,o.nextColumn=null,o.initialized=!1,o.registerColumnOption("resizable",!0),o.registerTableOption("resizableColumnFit",!1),o}return o(n,[{key:"initialize",value:function(){this.subscribe("column-rendered",this.layoutColumnHeader.bind(this))}},{key:"initializeEventWatchers",value:function(){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-delete",this.deInitializeComponent.bind(this)),this.subscribe("column-height",this.resizeHandle.bind(this)),this.initialized=!0)}},{key:"layoutCellHandles",value:function(e){"row"===e.row.type&&(this.deInitializeComponent(e),this.initializeColumn("cell",e,e.column,e.element))}},{key:"layoutColumnHeader",value:function(e){e.definition.resizable&&(this.initializeEventWatchers(),this.deInitializeComponent(e),this.initializeColumn("header",e,e,e.element))}},{key:"columnLayoutUpdated",value:function(e){var t=e.prevColumn();this.reinitializeColumn(e),t&&this.reinitializeColumn(t)}},{key:"reinitializeColumn",value:function(e){e.cells.forEach((function(e){e.modules.resize&&e.modules.resize.handleEl&&e.element.after(e.modules.resize.handleEl)})),e.modules.resize&&e.modules.resize.handleEl&&e.element.after(e.modules.resize.handleEl)}},{key:"initializeColumn",value:function(e,t,i,n){var o=this,a=i.definition.resizable,r={},s=i.getLastColumn();if("header"===e&&(r={variableHeight:"textarea"==i.definition.formatter||i.definition.variableHeight}),(!0===a||a==e)&&this._checkResizability(s)){var l=document.createElement("span");l.className="tabulator-col-resize-handle",l.addEventListener("click",(function(e){e.stopPropagation()}));var u=function(e){o.startColumn=i,o.initialNextColumn=o.nextColumn=s.nextColumn(),o._mouseDown(e,s,l)};l.addEventListener("mousedown",u),l.addEventListener("touchstart",u,{passive:!0}),l.addEventListener("dblclick",(function(e){var t=s.getWidth();e.stopPropagation(),s.reinitializeWidth(!0),t!==s.getWidth()&&(o.dispatch("column-resized",s),o.table.externalEvents.dispatch("columnResized",s.getComponent()))})),r.handleEl=l,n.parentNode&&n.after(l)}t.modules.resize=r}},{key:"deInitializeColumn",value:function(e){var t=this;this.deInitializeComponent(e),e.cells.forEach((function(e){t.deInitializeComponent(e)}))}},{key:"deInitializeComponent",value:function(e){var t;e.modules.resize&&(t=e.modules.resize.handleEl)&&t.parentElement&&t.parentElement.removeChild(t)}},{key:"resizeHandle",value:function(e,t){e.modules.resize&&e.modules.resize.handleEl&&(e.modules.resize.handleEl.style.height=t)}},{key:"_checkResizability",value:function(e){return e.definition.resizable}},{key:"_mouseDown",value:function(e,t,i){var n=this;function o(e){var i,o,a=void 0===e.screenX?e.touches[0].screenX:e.screenX,r=a-n.startX,s=a-n.latestX;if(n.latestX=a,n.table.rtl&&(r=-r,s=-s),i=t.width==t.minWidth||t.width==t.maxWidth,t.setWidth(n.startWidth+r),o=t.width==t.minWidth||t.width==t.maxWidth,s<0&&(n.nextColumn=n.initialNextColumn),n.table.options.resizableColumnFit&&n.nextColumn&&(!i||!o)){var l=n.nextColumn.getWidth();s>0&&l<=n.nextColumn.minWidth&&(n.nextColumn=n.nextColumn.nextColumn()),n.nextColumn&&n.nextColumn.setWidth(n.nextColumn.getWidth()-s)}n.table.columnManager.renderer.rerenderColumns(!0),!n.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function a(e){n.startColumn.modules.edit&&(n.startColumn.modules.edit.blocked=!1),n.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",a),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",a),n.table.element.classList.remove("tabulator-block-select"),n.startWidth!==t.getWidth()&&(n.dispatch("column-resized",t),n.table.externalEvents.dispatch("columnResized",t.getComponent()))}n.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),n.startColumn.modules.edit&&(n.startColumn.modules.edit.blocked=!0),n.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,n.latestX=n.startX,n.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",a),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",a)}}]),n}(V);Ue.moduleName="resizeColumns";var Xe=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).startColumn=!1,o.startY=!1,o.startHeight=!1,o.handle=null,o.prevHandle=null,o.registerTableOption("resizableRows",!1),o}return o(n,[{key:"initialize",value:function(){this.table.options.resizableRows&&this.subscribe("row-layout-after",this.initializeRow.bind(this))}},{key:"initializeRow",value:function(e){var t=this,i=e.getElement(),n=document.createElement("div");n.className="tabulator-row-resize-handle";var o=document.createElement("div");o.className="tabulator-row-resize-handle prev",n.addEventListener("click",(function(e){e.stopPropagation()}));var a=function(i){t.startRow=e,t._mouseDown(i,e,n)};n.addEventListener("mousedown",a),n.addEventListener("touchstart",a,{passive:!0}),o.addEventListener("click",(function(e){e.stopPropagation()}));var r=function(i){var n=t.table.rowManager.prevDisplayRow(e);n&&(t.startRow=n,t._mouseDown(i,n,o))};o.addEventListener("mousedown",r),o.addEventListener("touchstart",r,{passive:!0}),i.appendChild(n),i.appendChild(o)}},{key:"_mouseDown",value:function(e,t,i){var n=this;function o(e){t.setHeight(n.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-n.startY))}function a(e){document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",a),n.table.element.classList.remove("tabulator-block-select"),n.dispatchExternal("rowResized",t.getComponent())}n.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),n.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,n.startHeight=t.getHeight(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",a),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",a)}}]),n}(V);Xe.moduleName="resizeRows";var qe=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).binding=!1,o.observer=!1,o.containerObserver=!1,o.tableHeight=0,o.tableWidth=0,o.containerHeight=0,o.containerWidth=0,o.autoResize=!1,o.registerTableOption("autoResize",!0),o}return o(n,[{key:"initialize",value:function(){var e=this;if(this.table.options.autoResize){var t,i=this.table;this.tableHeight=i.element.clientHeight,this.tableWidth=i.element.clientWidth,i.element.parentNode&&(this.containerHeight=i.element.parentNode.clientHeight,this.containerWidth=i.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver((function(t){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var n=Math.floor(t[0].contentRect.height),o=Math.floor(t[0].contentRect.width);e.tableHeight==n&&e.tableWidth==o||(e.tableHeight=n,e.tableWidth=o,i.element.parentNode&&(e.containerHeight=i.element.parentNode.clientHeight,e.containerWidth=i.element.parentNode.clientWidth),e.table.columnManager.renderer.rerenderColumns(!0),i.redraw())}})),this.observer.observe(i.element),t=window.getComputedStyle(i.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((function(t){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var n=Math.floor(t[0].contentRect.height),o=Math.floor(t[0].contentRect.width);e.containerHeight==n&&e.containerWidth==o||(e.containerHeight=n,e.containerWidth=o,e.tableHeight=i.element.clientHeight,e.tableWidth=i.element.clientWidth),i.columnManager.renderer.rerenderColumns(!0),i.redraw()}})),this.containerObserver.observe(this.table.element.parentNode)),this.subscribe("table-resize",this.tableResized.bind(this))):(this.binding=function(){(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell)&&(i.columnManager.renderer.rerenderColumns(!0),i.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}},{key:"tableResized",value:function(){this.table.rowManager.redraw()}},{key:"clearBindings",value:function(){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}]),n}(V);qe.moduleName="resizeTable";var Ke=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).columns=[],o.hiddenColumns=[],o.mode="",o.index=0,o.collapseFormatter=[],o.collapseStartOpen=!0,o.collapseHandleColumn=!1,o.registerTableOption("responsiveLayout",!1),o.registerTableOption("responsiveLayoutCollapseStartOpen",!0),o.registerTableOption("responsiveLayoutCollapseUseFormatters",!0),o.registerTableOption("responsiveLayoutCollapseFormatter",!1),o.registerColumnOption("responsive"),o}return o(n,[{key:"initialize",value:function(){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-init",this.initializeRow.bind(this)),this.subscribe("row-layout",this.layoutRow.bind(this))))}},{key:"tableRedraw",value:function(e){-1===["fitColumns","fitDataStretch"].indexOf(this.layoutMode())&&(e||this.update())}},{key:"initializeResponsivity",value:function(){var e=this,t=[];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((function(i,n){i.modules.responsive&&i.modules.responsive.order&&i.modules.responsive.visible&&(i.modules.responsive.index=n,t.push(i),i.visible||"collapse"!==e.mode||e.hiddenColumns.push(i))})),t=(t=t.reverse()).sort((function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index})),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();var i,n=f(this.table.columnManager.columnsByIndex);try{for(n.s();!(i=n.n()).done;){var o=i.value;if("responsiveCollapse"==o.definition.formatter){this.collapseHandleColumn=o;break}}}catch(e){n.e(e)}finally{n.f()}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())}},{key:"initializeColumn",value:function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}}},{key:"initializeRow",value:function(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"))}},{key:"layoutRow",value:function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))}},{key:"updateColumnVisibility",value:function(e,t){!t&&e.modules.responsive&&(e.modules.responsive.visible=e.visible,this.initializeResponsivity())}},{key:"hideColumn",value:function(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())}},{key:"showColumn",value:function(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())}},{key:"update",value:function(){for(var e=this,t=!0;t;){var i="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),n=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-i;if(n<0){var o=e.columns[e.index];o?(e.hideColumn(o),e.index++):t=!1}else{var a=e.columns[e.index-1];a&&n>0&&n>=a.getWidth()?(e.showColumn(a),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}}},{key:"generateCollapsedContent",value:function(){var e=this;this.table.rowManager.getDisplayRows().forEach((function(t){e.generateCollapsedRowContent(t)}))}},{key:"generateCollapsedRowContent",value:function(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)}}},{key:"generateCollapsedRowData",value:function(e){var t,i=this,n=e.getData(),o=[];return this.hiddenColumns.forEach((function(a){var r=a.getFieldValue(n);if(a.definition.title&&a.field)if(a.modules.format&&i.table.options.responsiveLayoutCollapseUseFormatters){t={value:!1,data:{},getValue:function(){return r},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return a.getComponent()}},o.push({field:a.field,title:a.definition.title,value:a.modules.format.formatter.call(i.table.modules.format,t,a.modules.format.params,(function(e){e()}))})}else o.push({field:a.field,title:a.definition.title,value:r})})),o}},{key:"formatCollapsedData",value:function(e){var t=document.createElement("table");return e.forEach((function(e){var i,n=document.createElement("tr"),o=document.createElement("td"),a=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),a.appendChild(i)):a.innerHTML=e.value,n.appendChild(o),n.appendChild(a),t.appendChild(n)}),this),Object.keys(e).length?t:""}}]),n}(V);Ke.moduleName="responsiveLayout";var Je=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).selecting=!1,i.lastClickedRow=!1,i.selectPrev=[],i.selectedRows=[],i.headerCheckboxElement=null,i.registerTableOption("selectable","highlight"),i.registerTableOption("selectableRangeMode","drag"),i.registerTableOption("selectableRollingSelection",!0),i.registerTableOption("selectablePersistence",!0),i.registerTableOption("selectableCheck",(function(e,t){return!0})),i.registerTableFunction("selectRow",i.selectRows.bind(l(i))),i.registerTableFunction("deselectRow",i.deselectRows.bind(l(i))),i.registerTableFunction("toggleSelectRow",i.toggleRow.bind(l(i))),i.registerTableFunction("getSelectedRows",i.getSelectedRows.bind(l(i))),i.registerTableFunction("getSelectedData",i.getSelectedData.bind(l(i))),i.registerComponentFunction("row","select",i.selectRows.bind(l(i))),i.registerComponentFunction("row","deselect",i.deselectRows.bind(l(i))),i.registerComponentFunction("row","toggleSelect",i.toggleRow.bind(l(i))),i.registerComponentFunction("row","isSelected",i.isRowSelected.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){!1!==this.table.options.selectable&&(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.selectable&&!this.table.options.selectablePersistence&&this.subscribe("data-refreshing",this.deselectRows.bind(this)))}},{key:"rowRetrieve",value:function(e,t){return"selected"===e?this.selectedRows:t}},{key:"rowDeleted",value:function(e){this._deselectRow(e,!0)}},{key:"clearSelectionData",value:function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],!0!==e&&this._rowSelectionChanged()}},{key:"initializeRow",value:function(e){var t=this,i=e.getElement(),n=function e(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(i.classList.add("tabulator-selectable"),i.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?i.addEventListener("click",this.handleComplexRowClick.bind(this,e)):(i.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),i.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",n),document.body.addEventListener("keyup",n),t.toggleRow(e),!1})),i.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),i.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))):(i.classList.add("tabulator-unselectable"),i.classList.remove("tabulator-selectable"))}},{key:"handleComplexRowClick",value:function(e,t){var i=this;if(t.shiftKey){this.table._clearSelection(),this.lastClickedRow=this.lastClickedRow||e;var n=this.table.rowManager.getDisplayRowIndex(this.lastClickedRow),o=this.table.rowManager.getDisplayRowIndex(e),a=n<=o?n:o,r=n>=o?n:o,s=this.table.rowManager.getDisplayRows().slice(0).splice(a,r-a+1);t.ctrlKey||t.metaKey?(s.forEach((function(t){t!==i.lastClickedRow&&(!0===i.table.options.selectable||i.isRowSelected(e)||i.selectedRows.lengththis.table.options.selectable&&(s=s.slice(0,this.table.options.selectable)),this.selectRows(s)),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)}},{key:"toggleRow",value:function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}},{key:"selectRows",value:function(t){var i,n=this;switch(e(t)){case"undefined":this.table.rowManager.rows.forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;case"string":(i=this.table.rowManager.findRow(t))?this._selectRow(i,!0,!0):this.table.rowManager.getRows(t).forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;default:Array.isArray(t)?(t.forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged()):this._selectRow(t,!1,!0)}}},{key:"_selectRow",value:function(e,t,i){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!i&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var n=this.table.rowManager.findRow(e);n?-1==this.selectedRows.indexOf(n)&&(n.getElement().classList.add("tabulator-selected"),n.modules.select||(n.modules.select={}),n.modules.select.selected=!0,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!0),this.selectedRows.push(n),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!0),this.dispatchExternal("rowSelected",n.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)}},{key:"isRowSelected",value:function(e){return-1!==this.selectedRows.indexOf(e)}},{key:"deselectRows",value:function(e,t){var i,n=this;if(void 0===e){i=n.selectedRows.length;for(var o=0;o-1&&(o.getElement().classList.remove("tabulator-selected"),o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.modules.select.checkboxEl&&(o.modules.select.checkboxEl.checked=!1),n.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(o,!1),this.dispatchExternal("rowDeselected",o.getComponent()),n._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)}},{key:"getSelectedData",value:function(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getData())})),e}},{key:"getSelectedRows",value:function(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getComponent())})),e}},{key:"_rowSelectionChanged",value:function(e){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||this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows())}},{key:"registerRowSelectCheckbox",value:function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t}},{key:"registerHeaderSelectCheckbox",value:function(e){this.headerCheckboxElement=e}},{key:"childRowSelection",value:function(e,t){var i=this.table.modules.dataTree.getChildren(e,!0);if(t){var n,o=f(i);try{for(o.s();!(n=o.n()).done;){var a=n.value;this._selectRow(a,!0)}}catch(e){o.e(e)}finally{o.f()}}else{var r,s=f(i);try{for(s.s();!(r=s.n()).done;){var l=r.value;this._deselectRow(l,!0)}}catch(e){s.e(e)}finally{s.f()}}}}]),r}(V);function Ye(e,t,i,n,o,a,r){var s=window.DateTime||luxon.DateTime,l=r.format||"dd/MM/yyyy HH:mm:ss",u=r.alignEmptyValues,c=0;if(void 0!==s){if(e=s.isDateTime(e)?e:"iso"===l?s.fromISO(String(e)):s.fromFormat(String(e),l),t=s.isDateTime(t)?t:"iso"===l?s.fromISO(String(t)):s.fromFormat(String(t),l),e.isValid){if(t.isValid)return e-t;c=1}else c=t.isValid?-1:0;return("top"===u&&"desc"===a||"bottom"===u&&"asc"===a)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on luxon.js")}Je.moduleName="selectRow";var $e={number:function(e,t,i,n,o,a,r){var s=r.alignEmptyValues,l=r.decimalSeparator,u=r.thousandSeparator,c=0;if(e=String(e),t=String(t),u&&(e=e.split(u).join(""),t=t.split(u).join("")),l&&(e=e.split(l).join("."),t=t.split(l).join(".")),e=parseFloat(e),t=parseFloat(t),isNaN(e))c=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;c=1}return("top"===s&&"desc"===a||"bottom"===s&&"asc"===a)&&(c*=-1),c},string:function(t,i,n,o,a,r,s){var l,u=s.alignEmptyValues,c=0;if(t){if(i){switch(e(s.locale)){case"boolean":s.locale&&(l=this.langLocale());break;case"string":l=s.locale}return String(t).toLowerCase().localeCompare(String(i).toLowerCase(),l)}c=1}else c=i?-1:0;return("top"===u&&"desc"===r||"bottom"===u&&"asc"===r)&&(c*=-1),c},date:function(e,t,i,n,o,a,r){return r.format||(r.format="dd/MM/yyyy"),Ye.call(this,e,t,i,n,o,a,r)},time:function(e,t,i,n,o,a,r){return r.format||(r.format="HH:mm"),Ye.call(this,e,t,i,n,o,a,r)},datetime:Ye,boolean:function(e,t,i,n,o,a,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,n,o,a,r){var s=r.type||"length",l=r.alignEmptyValues,u=0;function c(e){switch(s){case"length":return e.length;case"sum":return e.reduce((function(e,t){return e+t}));case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce((function(e,t){return e+t}))/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?c(e):0)-(t?c(t):0);l=1}else l=Array.isArray(t)?-1:0;return("top"===l&&"desc"===a||"bottom"===l&&"asc"===a)&&(u*=-1),u},exists:function(e,t,i,n,o,a,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,i,n,o,a,r){var s,l,u,c,h,d=0,m=/(\d+)|(\D+)/g,p=/\d/,f=r.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((s=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!p.test(s)||!p.test(l))return s>l?1:-1;for(s=s.match(m),l=l.match(m),h=s.length>l.length?l.length:s.length;dc?1:-1;return s.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===f&&"desc"===a||"bottom"===f&&"asc"===a)&&(g*=-1),g}},Ze=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).sortList=[],i.changed=!1,i.registerTableOption("sortMode","local"),i.registerTableOption("initialSort",!1),i.registerTableOption("columnHeaderSortMulti",!0),i.registerTableOption("sortOrderReverse",!1),i.registerTableOption("headerSortElement","
"),i.registerColumnOption("sorter"),i.registerColumnOption("sorterParams"),i.registerColumnOption("headerSort",!0),i.registerColumnOption("headerSortStartingDir"),i.registerColumnOption("headerSortTristate"),i}return o(r,[{key:"initialize",value:function(){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))}},{key:"tableBuilt",value:function(){this.table.options.initialSort&&this.setSort(this.table.options.initialSort)}},{key:"remoteSortParams",value:function(e,t,i,n){var o=this.getSort();return o.forEach((function(e){delete e.column})),n.sort=o,n}},{key:"userSetSort",value:function(e,t){this.setSort(e,t),this.refreshSort()}},{key:"clearSort",value:function(){this.clear(),this.refreshSort()}},{key:"initializeColumn",value:function(t){var i,n,o=this,a=!1;switch(e(t.definition.sorter)){case"string":r.sorters[t.definition.sorter]?a=r.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":a=t.definition.sorter}t.modules.sort={sorter:a,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:t.definition.headerSortTristate},!1!==t.definition.headerSort&&((i=t.getElement()).classList.add("tabulator-sortable"),(n=document.createElement("div")).classList.add("tabulator-col-sorter"),"object"==e(this.table.options.headerSortElement)?n.appendChild(this.table.options.headerSortElement):n.innerHTML=this.table.options.headerSortElement,t.titleHolderElement.appendChild(n),t.modules.sort.element=n,i.addEventListener("click",(function(e){var i="",n=[],a=!1;if(t.modules.sort){if(t.modules.sort.tristate)i="none"==t.modules.sort.dir?t.modules.sort.startingDir:t.modules.sort.dir==t.modules.sort.startingDir?"asc"==t.modules.sort.dir?"desc":"asc":"none";else switch(t.modules.sort.dir){case"asc":i="desc";break;case"desc":i="asc";break;default:i=t.modules.sort.startingDir}o.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?((a=(n=o.getSort()).findIndex((function(e){return e.field===t.getField()})))>-1?(n[a].dir=i,a!=n.length-1&&(a=n.splice(a,1)[0],"none"!=i&&n.push(a))):"none"!=i&&n.push({column:t,dir:i}),o.setSort(n)):"none"==i?o.clear():o.setSort(t,i),o.refreshSort()}})))}},{key:"refreshSort",value:function(){"remote"===this.table.options.sortMode?this.reloadData():this.refreshData(!0)}},{key:"hasChanged",value:function(){var e=this.changed;return this.changed=!1,e}},{key:"getSort",value:function(){var e=[];return this.sortList.forEach((function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})})),e}},{key:"setSort",value:function(e,t){var i=this,n=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach((function(e){var t;(t=i.table.columnManager.findColumn(e.column))?(e.column=t,n.push(e),i.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)})),i.sortList=n,this.dispatch("sort-changed")}},{key:"clear",value:function(){this.setSort([])}},{key:"findSorter",value:function(t){var i,n=this.table.rowManager.activeRows[0],o="string";if(n&&(n=n.getData(),t.getField()))switch(e(i=t.getFieldValue(n))){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(i)||""===i?i.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return r.sorters[o]}},{key:"sort",value:function(e){var t=this,i=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,n=[],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.modules.sort;e.column&&o&&(o.sorter||(o.sorter=t.findSorter(e.column)),e.params="function"==typeof o.params?o.params(e.column.getComponent(),e.dir):o.params,n.push(e)),t.setColumnHeader(e.column,e.dir)})),n.length&&t._sortItems(e,n)):i.forEach((function(e,i){t.setColumnHeader(e.column,e.dir)})),this.subscribedExternal("dataSorted")&&(e.forEach((function(e){o.push(e.getComponent())})),this.dispatchExternal("dataSorted",t.getSort(),o)),e}},{key:"clearColumnHeaders",value:function(){this.table.columnManager.getRealColumns().forEach((function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))}))}},{key:"setColumnHeader",value:function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)}},{key:"_sortItems",value:function(e,t){var i=this,n=t.length-1;e.sort((function(e,o){for(var a,r=n;r>=0;r--){var s=t[r];if(0!==(a=i._sortRow(e,o,s.column,s.dir,s.params)))break}return a}))}},{key:"_sortRow",value:function(e,t,i,n,o){var a,r,s="asc"==n?e:t,l="asc"==n?t:e;return e=void 0!==(e=i.getFieldValue(s.getData()))?e:"",t=void 0!==(t=i.getFieldValue(l.getData()))?t:"",a=s.getComponent(),r=l.getComponent(),i.modules.sort.sorter.call(this,e,t,a,r,i.getComponent(),n,o)}}]),r}(V);Ze.moduleName="sort",Ze.sorters=$e;var Qe=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).tooltipSubscriber=null,o.headerSubscriber=null,o.timeout=null,o.popupInstance=null,o.registerTableOption("tooltipGenerationMode",void 0),o.registerTableOption("tooltipDelay",300),o.registerColumnOption("tooltip"),o.registerColumnOption("headerTooltip"),o}return o(n,[{key:"initialize",value:function(){this.deprecationCheck(),this.subscribe("column-init",this.initializeColumn.bind(this))}},{key:"deprecationCheck",value:function(){void 0!==this.table.options.tooltipGenerationMode&&console.warn("Use of the tooltipGenerationMode option is now deprecated. This option is no longer needed as tooltips are always generated on hover now")}},{key:"initializeColumn",value:function(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")))}},{key:"mousemoveCheck",value:function(e,t,i){var n="tooltip"===e?i.column.definition.tooltip:i.definition.headerTooltip;n&&(this.clearPopup(),this.timeout=setTimeout(this.loadTooltip.bind(this,t,i,n),this.table.options.tooltipDelay))}},{key:"mouseoutCheck",value:function(e,t,i){this.popupInstance||this.clearPopup()}},{key:"clearPopup",value:function(e,t,i){clearTimeout(this.timeout),this.timeout=null,this.popupInstance&&this.popupInstance.hide()}},{key:"loadTooltip",value:function(e,t,i){var n,o,a,r=this;"function"==typeof i&&(i=i(e,t.getComponent(),(function(e){o=e}))),i instanceof HTMLElement?n=i:(n=document.createElement("div"),!0===i&&(t instanceof w?i=t.value:t.definition.field?this.langBind("columns|"+t.definition.field,(function(e){n.innerHTML=i=e||t.definition.title})):i=t.definition.title),n.innerHTML=i),(i||0===i||"0"===i||!1===i)&&(n.classList.add("tabulator-tooltip"),n.addEventListener("mousemove",(function(e){return e.preventDefault()})),this.popupInstance=this.popup(n),"function"==typeof o&&this.popupInstance.renderCallback(o),a=this.popupInstance.containerEventCoords(e),this.popupInstance.show(a.x+15,a.y+15).hideOnBlur((function(){r.dispatchExternal("TooltipClosed",t.getComponent()),r.popupInstance=null})),this.dispatchExternal("TooltipOpened",t.getComponent()))}}]),n}(V);Qe.moduleName="tooltip";var et={integer:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(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)},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("|")),""===t||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 n=!0,o=e.getData(),a=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(e){var i=e.getData();i!==o&&t==a.getFieldValue(i)&&(n=!1)})),n},required:function(e,t,i){return""!==t&&null!=t}},tt=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).invalidCells=[],i.registerTableOption("validationMode","blocking"),i.registerColumnOption("validator"),i.registerTableFunction("getInvalidCells",i.getInvalidCells.bind(l(i))),i.registerTableFunction("clearCellValidation",i.userClearCellValidation.bind(l(i))),i.registerTableFunction("validate",i.userValidate.bind(l(i))),i.registerComponentFunction("cell","isValid",i.cellIsValid.bind(l(i))),i.registerComponentFunction("cell","clearValidation",i.clearValidation.bind(l(i))),i.registerComponentFunction("cell","validate",i.cellValidate.bind(l(i))),i.registerComponentFunction("column","validate",i.columnValidate.bind(l(i))),i.registerComponentFunction("row","validate",i.rowValidate.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){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))}},{key:"editValidate",value:function(e,t,i){var n=this,o="manual"===this.table.options.validationMode||this.validate(e.column.modules.validate,e,t);return!0!==o&&setTimeout((function(){e.getElement().classList.add("tabulator-validation-fail"),n.dispatchExternal("validationFailed",e.getComponent(),t,o)})),o}},{key:"editorClear",value:function(e,t){t&&e.column.modules.validate&&this.cellValidate(e),e.getElement().classList.remove("tabulator-validation-fail")}},{key:"editedClear",value:function(e){e.modules.validate&&(e.modules.validate.invalid=!1)}},{key:"cellIsValid",value:function(e){return e.modules.validate&&e.modules.validate.invalid||!0}},{key:"cellValidate",value:function(e){return this.validate(e.column.modules.validate,e,e.getValue())}},{key:"columnValidate",value:function(e){var t=this,i=[];return e.cells.forEach((function(e){t.cellValidate(e)||i.push(e.getComponent())})),!i.length||i}},{key:"rowValidate",value:function(e){var t=this,i=[];return e.cells.forEach((function(e){t.cellValidate(e)||i.push(e.getComponent())})),!i.length||i}},{key:"userClearCellValidation",value:function(e){var t=this;e||(e=this.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach((function(e){t.clearValidation(e._getSelf())}))}},{key:"userValidate",value:function(e){var t=[];return this.table.rowManager.rows.forEach((function(e){var i=(e=e.getComponent()).validate();!0!==i&&(t=t.concat(i))})),!t.length||t}},{key:"initializeColumnCheck",value:function(e){void 0!==e.definition.validator&&this.initializeColumn(e)}},{key:"initializeColumn",value:function(e){var t,i=this,n=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach((function(e){(t=i._extractValidator(e))&&n.push(t)})):(t=this._extractValidator(e.definition.validator))&&n.push(t),e.modules.validate=!!n.length&&n)}},{key:"_extractValidator",value:function(t){var i,n,o;switch(e(t)){case"string":return(o=t.indexOf(":"))>-1?(i=t.substring(0,o),n=t.substring(o+1)):i=t,this._buildValidator(i,n);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}}},{key:"_buildValidator",value:function(e,t){var i="function"==typeof e?e:r.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)}},{key:"validate",value:function(e,t,i){var n=this,o=[],a=this.invalidCells.indexOf(t);return e&&e.forEach((function(e){e.func.call(n,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==a&&this.invalidCells.push(t)):(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),a>-1&&this.invalidCells.splice(a,1)),!o.length||o}},{key:"getInvalidCells",value:function(){var e=[];return this.invalidCells.forEach((function(t){e.push(t.getComponent())})),e}},{key:"clearValidation",value:function(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))}}]),r}(V);tt.moduleName="validate",tt.validators=et;var it=Object.freeze({__proto__:null,AccessorModule:$,AjaxModule:ne,ClipboardModule:oe,ColumnCalcsModule:se,DataTreeModule:le,DownloadModule:ce,EditModule:pe,ExportModule:ve,FilterModule:ye,FormatModule:Ce,FrozenColumnsModule:ke,FrozenRowsModule:Ee,GroupRowsModule:Te,HistoryModule:Me,HtmlTableImportModule:Le,ImportModule:Se,InteractionModule:Pe,KeybindingsModule:Fe,MenuModule:ze,MoveColumnsModule:He,MoveRowsModule:_e,MutatorModule:Oe,PageModule:Be,PersistenceModule:Ve,PopupModule:We,PrintModule:je,ReactiveDataModule:Ge,ResizeColumnsModule:Ue,ResizeRowsModule:Xe,ResizeTableModule:qe,ResponsiveLayoutModule:Ke,SelectRowModule:Je,SortModule:Ze,TooltipModule:Qe,ValidateModule:tt}),nt=function(e){a(n,e);var i=c(n);function n(){return t(this,n),i.apply(this,arguments)}return n}(Y);return new K(nt,it),nt})); //# sourceMappingURL=tabulator.min.js.map diff --git a/dist/js/tabulator.min.js.map b/dist/js/tabulator.min.js.map index 25bf9cd91..a4c6e9fb7 100644 --- a/dist/js/tabulator.min.js.map +++ b/dist/js/tabulator.min.js.map @@ -1 +1 @@ -{"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/TableRegistry.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/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/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/select.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/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/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/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key){\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","import Column from './Column.js';\r\n\r\n//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this._column.getTitleDownload();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"maxInitialWidth\": undefined,\r\n\t\"tooltip\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerTooltip\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//update tooltip on mouse enter\r\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\"){\r\n\t\t\telement.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\t\tthis._generateTooltip();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//generate tooltip text\r\n\t_generateTooltip(){\r\n\t\tvar tooltip = this.column.tooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\ttooltip = this.value;\r\n\t\t\t}else if(typeof(tooltip) == \"function\"){\r\n\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof tooltip === \"undefined\"){\r\n\t\t\t\ttooltip = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate){\r\n\t\tvar changed = this.setValueProcessData(value, mutate);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tif(this.column.definition.cellEdited){\r\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value !== value){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\t\tthis._generateTooltip();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.tooltip = false; //hold column tooltip\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleDownload = null;\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.maxInitialWidth = null;\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\tsetTooltip(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\t//set header tooltips\r\n\t\tvar tooltip = def.headerTooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(def.field){\r\n\t\t\t\t\tthis.langBind(\"columns|\" + def.field, (value) => {\r\n\t\t\t\t\t\tthis.element.setAttribute(\"title\", value || def.title);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.element.setAttribute(\"title\", def.title);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof(tooltip) == \"function\"){\r\n\t\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.setTooltip();\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\r\n\t\t//update header tooltip on mouse enter\r\n\t\tthis.element.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\tthis.setTooltip();\r\n\t\t});\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif (def.maxInitialWidth) {\r\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set tooltip if present\r\n\t\tthis.tooltip = this.definition.tooltip;\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\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);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this.titleDownload;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\t// maxInitialWidth ignored here as width specified\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData(force);\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(force){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tvar setTo = maxWidth + 1;\r\n\t\t\t\tif (this.maxInitialWidth && !force) {\r\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\r\n\t\t\t\t}\r\n\t\t\t\tthis.setWidthActual(setTo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn clone;\r\n\t}\r\n}","export default class OptionsList {\r\n\tconstructor(table, msgType, defaults = {}){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = Object.assign({}, defaults)\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determine weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\t\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t\t\r\n\t\tthis.fitDataColAvg = 0;\r\n\t\t\r\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\r\n\t\t\r\n\t\tthis.visibleRows = null;\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.isFitData = false;\r\n\t\t\r\n\t\tthis.columns = [];\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.compatibilityCheck();\r\n\t\tthis.layoutCheck();\r\n\t\tthis.vertScrollListen();\r\n\t}\r\n\t\r\n\tcompatibilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\t\t\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\t\t\r\n\t\treturn ok;\r\n\t}\r\n\t\r\n\tlayoutCheck(){\r\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\r\n\t}\r\n\r\n\tvertScrollListen(){\r\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\r\n\t}\r\n\r\n\tclearVisRowCache(){\r\n\t\tthis.visibleRows = null;\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\t\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\t\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\t\t\t\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\r\n\t\t}\r\n\t}\r\n\t\r\n\tcalcWindowBuffer(){\r\n\t\tvar buffer = this.elementVertical.clientWidth;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tif(width > buffer){\r\n\t\t\t\t\tbuffer = width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.windowBuffer = buffer * 2;\r\n\t}\r\n\t\r\n\trerenderColumns(update, blockRedraw){\t\t\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t},\r\n\t\tcolPos = 0;\r\n\t\t\r\n\t\t\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.clear();\r\n\t\t\r\n\t\tthis.calcWindowBuffer();\r\n\t\t\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\t\t\t\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\t\t\t\t\r\n\t\t\t\tconfig.width = width;\r\n\t\t\t\t\r\n\t\t\t\tif (this.isFitData) {\r\n\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t\t\t\t\t//column is visible\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol == -1){\r\n\t\t\t\t\t\tthis.leftCol = this.columns.length;\r\n\t\t\t\t\t\tthis.vDomPadLeft = colPos;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol = this.columns.length;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// column is hidden\r\n\t\t\t\t\tif(this.leftCol !== -1){\r\n\t\t\t\t\t\tthis.vDomPadRight += width;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.vdomHoz = config;\r\n\t\t\t\t\r\n\t\t\t\tcolPos += width;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.reinitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\t\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\t\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\t\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\t\t\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\t\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\t\t\r\n\t\tif(this.isFitData){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.generateCells();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// if(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t// \tbreak;\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// for(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t// \tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\t\t\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn !match;\r\n\t}\r\n\t\r\n\treinitializeRows(){\r\n\t\tvar rows = this.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetVisibleRows(){\r\n\t\tif (!this.visibleRows){\r\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t}\r\n\r\n\t\treturn this.visibleRows;\t\r\n\t}\r\n\t\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\t\r\n\t\t\tlet column = this.columns[this.rightCol + 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t\t\t}\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol - 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\r\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(diff){\r\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\r\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.rightCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\t\t\tthis.rightCol --;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\t\t\tthis.leftCol ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\t\t\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\t\t\t\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn widthDiff;\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\t\t\t\t\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\t\t\t\t\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nimport defaultColumnOptions from './column/defaults/options.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\t\t\tvar topColumn = nextToColumn.getTopColumn()\r\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\r\n\t\t\tvar nextEl = topColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcolumn.columnRendered();\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\tverticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibleColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //holde lements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.created = false;\r\n\r\n\t\tthis.setData(data);\r\n\t}\r\n\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\tthis.element = el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\r\n\t\tif(!this.initialized || force){\r\n\r\n\t\t\tthis.deleteCells();\r\n\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\r\n\t\t\tthis.generateCells();\r\n\r\n\t\t\tthis.initialized = true;\r\n\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t}\r\n\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tvar height = cell.getHeight();\r\n\t\t\tif(height > maxHeight){\r\n\t\t\t\tmaxHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t}else{\r\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t}\r\n\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\t\tif(force){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis.calcHeight(force);\r\n\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\r\n\t\t\tthis.manualHeight = true;\r\n\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\r\n\t\t\tthis.setCellHeight();\r\n\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\r\n\t\t\t//this.reinitialize();\r\n\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\r\n\t\tthis.deleteActual();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\r\n\t\tthis.detatchModules();\r\n\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\r\n\t\tthis.deleteCells();\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.clearRows();\r\n\t\tthis.renderRows();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\t// element.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\r\n\t\t});\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\t\tthis.placeholder = null; //placeholder element\r\n\t\tthis.placeholderContents = null; //placeholder element\r\n\t\t\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\t\t\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\t\t\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\t\t\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\t\t\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\t\t\r\n\t\tthis.renderer = null;\r\n\t}\r\n\t\r\n\t//////////////// Setup Functions /////////////////\r\n\t\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitializePlaceholder(){\r\n\t\t//configure placeholder element\r\n\t\tif(typeof this.table.options.placeholder == \"string\"){\r\n\t\t\tlet el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\t\t\t\r\n\t\t\tlet contents = document.createElement(\"div\");\r\n\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\r\n\t\t\tcontents.innerHTML = this.table.options.placeholder;\r\n\t\t\t\r\n\t\t\tel.appendChild(contents);\r\n\t\t\t\r\n\t\t\tthis.placeholderContents = contents;\r\n\t\t\tthis.placeholder = el;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\t\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializePlaceholder()\r\n\t\tthis.initializeRenderer();\r\n\t\t\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\t\t\r\n\t\tthis.firstRender = true;\r\n\t\t\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\t\t\t\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\r\n\t\t\t\tthis._positionPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//handle vertical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\t\t\t\t\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\t\t\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\t\t\r\n\t\treturn match || false;\r\n\t}\r\n\t\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\t\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\t\t\t\t\r\n\t\t\t\tthis._setDataActual(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\t\t\r\n\t\tthis._wipeElements();\r\n\t\t\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\t\t\t\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\t\t\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\t\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\t\t\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\t\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\t\t\t\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlength = data.length - 1;\r\n\t\t\t\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, true);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn pos;\r\n\t}\r\n\t\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\t\t\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\t\t\t\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\t\t\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\t\t\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\t\t\t\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\t\t\t\t\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(top){\r\n\t\t\t\t\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\t\t\r\n\t\tthis.moveRowActual(from, to, after);\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\t\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\t\t\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\t\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\t\t\r\n\t\tif(from !== to){\r\n\t\t\t\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\t\t\t\r\n\t\t\tif (fromIndex > -1) {\r\n\t\t\t\t\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\t\t\t\t\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\t\t\t\t\r\n\t\t\t\tif (toIndex > -1) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\t\t\t\t\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\t\t\t\t\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\t\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\t\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\t\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\t\t\r\n\t\t\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\t\t\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn nextRow;\r\n\t}\r\n\t\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\t\t\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn prevRow;\r\n\t}\r\n\t\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\t\t\r\n\t\trow = this.findRow(row);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\t\t\r\n\t\treturn rows.length;\r\n\t}\r\n\t\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\t\t\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\t\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\t\t\r\n\t\t\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\t\t\t\t\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.renderTable();\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-refreshed\");\r\n\t\t}\r\n\t}\r\n\t\r\n\trefreshPipelines(handler, stage, index, renderInPosition){\r\n\t\tthis.dispatch(\"data-refreshing\");\r\n\t\t\r\n\t\tif(!handler){\r\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t}\r\n\t\t\r\n\t\t//cascade through data refresh stages\r\n\t\tswitch(stage){\r\n\t\t\tcase \"all\":\r\n\t\t\t//handle case where alldata needs refreshing\r\n\t\t\t\r\n\t\t\tcase \"dataPipeline\":\r\n\t\t\t\r\n\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\tindex = 0;\r\n\t\t\tthis.resetDisplayRows();\r\n\t\t\t\r\n\t\t\tcase \"displayPipeline\":\r\n\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\t\t\t\t\r\n\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcase \"end\":\r\n\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t}\r\n\t}\r\n\t\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\t\t\t\t\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\t\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\t\t\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\t\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\t\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\t\t\r\n\t\tvar output = true;\r\n\t\t\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\t\t\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetVisibleRows(chain, viewable){\r\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\r\n\t\t\r\n\t\tif(chain){\r\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\t\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(false, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\t\t\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\t\t\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\t\t\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t\t\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\t\r\n\trenderTable(){\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\t\t\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tthis._clearTable();\r\n\t\t\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis.renderer.renderRows();\r\n\t\t\t\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"table-layout\");\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\t\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\t\t\r\n\t\tthis._clearPlaceholder();\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\t\r\n\t_showPlaceholder(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\t\t\t\r\n\t\t\tthis.getElement().appendChild(this.placeholder);\r\n\t\t\tthis._positionPlaceholder();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_positionPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\r\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\t\t\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\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));\r\n\t\t\t\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.renderer.resize();\r\n\t\t\t\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._positionPlaceholder();\r\n\t}\r\n\t\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\t\t\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\t\t\t\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRenderInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.redrawBlockRenderInPosition = false;\r\n\t}\r\n\t\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t\t\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\t\t\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\t\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.containerElement = this.createContainerElement(); //containing element\r\n\t\tthis.external = false;\r\n\t\tthis.links = [];\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t\r\n\tcreateContainerElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer-contents\");\r\n\r\n\t\tthis.element.appendChild(el);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.containerElement.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(parent){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(parent){\r\n\t\t\tthis.links.push(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.links.forEach(function(link){\r\n\t\t\tlink.footerRedraw();\r\n\t\t});\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\nimport Row from '../row/Row.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\t\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.el = null;\r\n\t\t\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\t\t\r\n\t\tthis.previousTargets = {};\r\n\t\t\r\n\t\tthis.listeners = [\r\n\t\t\t\"click\",\r\n\t\t\t\"dblclick\",\r\n\t\t\t\"contextmenu\",\r\n\t\t\t\"mouseenter\",\r\n\t\t\t\"mouseleave\",\r\n\t\t\t\"mouseover\",\r\n\t\t\t\"mouseout\",\r\n\t\t\t\"mousemove\",\r\n\t\t\t\"touchstart\",\r\n\t\t\t\"touchend\",\r\n\t\t];\r\n\t\t\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\t\t\r\n\t\tthis.pseudoTrackers = {\r\n\t\t\t\"row\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"cell\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"group\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"column\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t}\r\n\t\t\r\n\t\tthis.pseudoTracking = false;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.el = this.table.element;\r\n\t\t\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\t\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\t\t\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\t\t\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\t\r\n\tbindPseudoEvents(){\r\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\r\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\r\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\r\n\t\t});\r\n\t\t\r\n\t\tthis.pseudoTracking = true;\r\n\t}\r\n\t\r\n\tpseudoMouseEnter(key, e, target){\r\n\t\tif(this.pseudoTrackers[key].target !== target){\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.pseudoMouseLeave(key, e);\r\n\t\t\t\r\n\t\t\tthis.pseudoTrackers[key].target = target;\r\n\t\t\t\r\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpseudoMouseLeave(key, e){\r\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\r\n\t\tlinkedKeys = {\r\n\t\t\t\"row\":[\"cell\"],\r\n\t\t\t\"cell\":[\"row\"],\r\n\t\t};\r\n\t\t\r\n\t\tleaveList = leaveList.filter((item) => {\r\n\t\t\tvar links = linkedKeys[key];\r\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\tleaveList.forEach((key) => {\r\n\t\t\tvar target = this.pseudoTrackers[key].target;\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t\t\r\n\t\t\t\tthis.pseudoTrackers[key].target = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\t\t\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\t\t\t\t\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this))\r\n\t}\r\n\t\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\t\t\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\r\n\t\t\tthis.bindPseudoEvents();\r\n\t\t}\r\n\t\t\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\t\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\t\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t\t\r\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\r\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\t\t\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\t\t\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\t\t\t\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\t\t\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\t\t\t\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\r\n\t\t\t\t\t\t\ttargets[key] = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tif(targets[\"row\"] instanceof Row){\r\n\t\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t\t}else{\t\r\n\t\t\t\t\t\t\tif(targets[\"row\"]){\r\n\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?\")\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.previousTargets = targetMatches;\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\t\t\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearWatchers(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.handler){\r\n\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\tlistener.handler = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFunctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, hanlder)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name]){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\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?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\r\n\t\tthis.msgElement = this.createMsgElement(); //message element\r\n\t\tthis.loadingElement = null;\r\n\t\tthis.errorElement = null;\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar template;\r\n\r\n\t\tthis.loaderElement.appendChild(this.msgElement);\r\n\r\n\t\tif(this.table.options.dataLoaderLoading){\r\n\t\t\tif(typeof this.table.options.dataLoaderLoading == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderLoading.trim();\r\n\t\t\t\tthis.loadingElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.loadingElement = this.table.options.dataLoaderLoading;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataLoaderError){\r\n\t\t\tif(typeof this.table.options.dataLoaderError == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderError.trim();\r\n\t\t\t\tthis.errorElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.errorElement = this.table.options.dataLoaderError;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcreateLoaderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-loader\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateMsgElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-loader-msg\");\r\n\t\tel.setAttribute(\"role\", \"alert\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.showLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\r\n\t\t\t\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.hideLoader();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\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\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.hideLoader();\r\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\tshowLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.hideLoader();\r\n\r\n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\r\n\t\t\tthis.msgElement.classList.remove(\"tabulator-error\");\r\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\r\n\r\n\t\t\tif(this.loadingElement){\r\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\r\n\t\t\t}else{\r\n\t\t\t\tthis.msgElement.innerHTML = this.langText(\"data|loading\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n\r\n\tshowError(){\r\n\t\tthis.hideLoader();\r\n\r\n\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\t\tthis.msgElement.classList.remove(\"tabulator-loading\");\r\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\r\n\r\n\t\tif(this.errorElement){\r\n\t\t\tthis.msgElement.appendChild(this.errorElement);\r\n\t\t}else{\r\n\t\t\tthis.msgElement.innerHTML = this.langText(\"data|error\");\r\n\t\t}\r\n\r\n\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t}\r\n\r\n\r\n\thideLoader(){\r\n\t\tif(this.loaderElement.parentNode){\r\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(table, optionsList, debug){\r\n\t\tthis.table = table;\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this.table, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","import CoreFeature from './CoreFeature.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registation ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = func;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Module;","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tthis.dispatch(\"layout-refreshing\")\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t\t\"counter\":{\r\n\t\t\t\t\"showing\": \"Showing\",\r\n\t\t\t\t\"of\": \"of\",\r\n\t\t\t\t\"rows\": \"rows\",\r\n\t\t\t\t\"pages\": \"pages\",\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\r\n\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tvar orderedMods = [],\r\n\t\t\tunOrderedMods = [];\r\n\r\n\t\t\tthis.modules = {};\r\n\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\t\t\t\tlet module = new mod(this);\r\n\r\n\t\t\t\tthis.modules[name] = module;\r\n\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore.push(module);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(mod.moduleInitOrder){\r\n\t\t\t\t\t\torderedMods.push(module);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tunOrderedMods.push(module);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\torderedMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\r\n\t\t\tthis.modulesRegular = orderedMods.concat(unOrderedMods);\r\n\t\t}\r\n\t}\r\n\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nclass Tabulator {\r\n\r\n\tconstructor(element, options){\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\r\n\r\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\r\n\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tif(this.initializeElement(element)){\r\n\r\n\t\t\tthis.initializeCoreSystems(options);\r\n\r\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tTableRegistry.register(this); //register table for inter-device communication\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\r\n\t\tthis.bindModules();\r\n\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\r\n\t\tthis._clearObjectPointers();\r\n\r\n\t\tthis._mapDeprecatedFunctionality();\r\n\r\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\r\n\t\tthis.dataLoader.initialize();\r\n\t\t// this.columnManager.initialize();\r\n\t\t// this.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\r\n\t//convert deprecated functionality to new functions\r\n\t_mapDeprecatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t_clearSelection(){\r\n\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tif (window.getSelection) {\r\n\t\t if (window.getSelection().empty) { // Chrome\r\n\t\t \twindow.getSelection().empty();\r\n\t\t } else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t \twindow.getSelection().removeAllRanges();\r\n\t\t }\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\r\n\t//create table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\r\n\t\tthis._rtlCheck();\r\n\r\n\t\tthis._buildElement();\r\n\r\n\t\tthis._initializeTable();\r\n\r\n\t\tthis._loadInitialData();\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_rtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\r\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options,\r\n\t\tnewElement;\r\n\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\r\n\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\r\n\t\tthis.interactionMonitor.initialize();\r\n\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\r\n\t\tthis._detectBrowser();\r\n\r\n\t\t//initialize core modules\r\n\t\tthis.modulesCore.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t})\r\n\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\r\n\t\tif(options.autoColumns && options.data){\r\n\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\r\n\t\t//initialize regular modules\r\n\t\tthis.modulesRegular.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t});\r\n\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t}\r\n\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\r\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\r\n\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\r\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));\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"replaceData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"updateData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\taddData(data, pos, index){\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t\t.then((rows) => {\r\n\t\t\t\t\t\tvar output = [];\r\n\r\n\t\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tresolve(output);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"addData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"updateOrAddData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tif(this.initialized){\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"addRow failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn Promise.resolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\r\n\t}\r\n\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.columnManager.setColumns(definition);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\r\n\tgetColumn(field){\r\n\t\tvar col = this.columnManager.findColumn(field);\r\n\r\n\t\tif(col){\r\n\t\t\treturn col.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from);\r\n\t\tvar toColumn = this.columnManager.findColumn(to);\r\n\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.columnManager.redraw(force);\r\n\t\t\tthis.rowManager.redraw(force);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"redraw failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\r\n\t//////////////////// Event Bus ///////////////////\r\n\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;\r\n","export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //separator for nested data\r\n\r\n\ttooltipGenerationMode:\"load\", //when to generate tooltips\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\tdataLoaderErrorTimeout:3000,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {}","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nexport default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\r\n\t\t\tvar output = generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.config = {}; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\t\t\r\n\t\tthis.loaderPromise = false;\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\t\t\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\t\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\t\t\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\r\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\t\r\n\trequestParams(data, config, silent, params){\r\n\t\tvar ajaxParams = this.table.options.ajaxParams;\r\n\t\t\r\n\t\tif(ajaxParams){\r\n\t\t\tif(typeof ajaxParams === \"function\"){\r\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tparams = Object.assign(params, ajaxParams);\r\n\t\t}\t\t\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\t\r\n\trequestData(url, params, config, silent, previousData){\r\n\t\tvar ajaxConfig;\r\n\t\t\r\n\t\tif(!previousData && this.requestDataCheck(url)){\r\n\t\t\tif(url){\r\n\t\t\t\tthis.setUrl(url);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tajaxConfig = this.generateConfig(config);\r\n\t\t\t\r\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetDefaultConfig(config = {}){\r\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(this.config, config);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//load config object\r\n\tgenerateConfig(config = {}){\r\n\t\tvar ajaxConfig = Object.assign({}, this.config)\r\n\t\t\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tajaxConfig.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(ajaxConfig, config);\r\n\t\t}\r\n\t\t\r\n\t\treturn ajaxConfig;\r\n\t}\r\n\t\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\t\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\t\r\n\t//send ajax request\r\n\tsendRequest(url, params, config){\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\r\n\t\t\treturn this.loaderPromise(url, config, params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\tmethod: \"GET\",\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tif(this.topRow){\r\n\t\t\trows.unshift(this.topRow);\r\n\t\t}\r\n\r\n\t\tif(this.botRow){\r\n\t\t\trows.push(this.botRow);\r\n\t\t}\r\n\t\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRowsRefresh(){\r\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\r\n\t\t\tthis.recalcAll();\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.table.footerManager.remove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.table.footerManager.prepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(row);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeElementField(){\r\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\r\n\r\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\t}\r\n\t\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tvar field = cell.column.getField();\r\n\r\n\t\tif(field === this.elementField){\r\n\t\t\tthis.layoutRow(cell.row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowExpanded(row){\r\n\t\treturn row.modules.dataTree.open;\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\nimport jsonLines from './downloaders/jsonLines.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tjsonLines:jsonLines,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function (list, options, setFileContents) {\r\n\tconst fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tconst item = {};\r\n\r\n\t\tswitch (row.type) {\r\n\t\t\tcase \"header\":\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\t\tif (col) {\r\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tfileContents.push(JSON.stringify(item));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\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 }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\r\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}});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\n\r\n//dropdown select editor\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : []),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tmultiselect = editorParams.multiselect,\r\n\tdataItems = [],\r\n\tcurrentItem = {},\r\n\tdisplayItems = [],\r\n\tcurrentItems = [],\r\n\tblurable = true,\r\n\tblockListShow = false,\r\n\tsearchWord = \"\",\r\n\tsearchWordTimeout = null;\r\n\r\n\tif(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === \"object\" && !editorParams.values)){\r\n\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\r\n\t\teditorParams = {values:editorParams};\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\r\n\t\t}\r\n\r\n\t\treturn Object.keys(output);\r\n\t}\r\n\r\n\tfunction parseItems(inputValues, curentValues){\r\n\t\tvar dataList = [];\r\n\t\tvar displayList = [];\r\n\r\n\t\tfunction processComplexListItem(item){\r\n\t\t\tvar item = {\r\n\t\t\t\tlabel:item.label,\r\n\t\t\t\tvalue:item.value,\r\n\t\t\t\titemParams:item.itemParams,\r\n\t\t\t\telementAttributes: item.elementAttributes,\r\n\t\t\t\telement:false,\r\n\t\t\t};\r\n\r\n\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t// }\r\n\r\n\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\tsetItem(item);\r\n\t\t\t}\r\n\r\n\t\t\tdataList.push(item);\r\n\t\t\tdisplayList.push(item);\r\n\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif(typeof inputValues == \"function\"){\r\n\t\t\tinputValues = inputValues(cell);\r\n\t\t}\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\r\n\t\t\t\t\tif(value.options){\r\n\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\tlabel:value.label,\r\n\t\t\t\t\t\t\tgroup:true,\r\n\t\t\t\t\t\t\titemParams:value.itemParams,\r\n\t\t\t\t\t\t\telementAttributes:value.elementAttributes,\r\n\t\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdisplayList.push(item);\r\n\r\n\t\t\t\t\t\tvalue.options.forEach(function(item){\r\n\t\t\t\t\t\t\tprocessComplexListItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tprocessComplexListItem(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\titem = {\r\n\t\t\t\t\t\tlabel:value,\r\n\t\t\t\t\t\tvalue:value,\r\n\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\t\tsetItem(item);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataList.push(item);\r\n\t\t\t\t\tdisplayList.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tlabel:inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t\telement:false,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\tsetItem(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataList.push(item);\r\n\t\t\t\tdisplayList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(editorParams.sortValuesList){\r\n\t\t\tdataList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tdisplayList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList !== \"asc\"){\r\n\t\t\t\tdataList.reverse();\r\n\t\t\t\tdisplayList.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataItems = dataList;\r\n\t\tdisplayItems = displayList;\r\n\r\n\t\tfillList();\r\n\t}\r\n\r\n\tfunction fillList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\r\n\t\t\t\tif(item.group){\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\r\n\t\t\t\t\tel.addEventListener(\"click\", function(){\r\n\t\t\t\t\t\tblockListShow = true;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tblockListShow = false;\r\n\t\t\t\t\t\t}, 10);\r\n\r\n\t\t\t\t\t\t// setCurrentItem(item);\r\n\t\t\t\t\t\t// chooseItem();\r\n\t\t\t\t\t\tif(multiselect){\r\n\t\t\t\t\t\t\ttoggleItem(item);\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tchooseItem(item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// if(item === currentItem){\r\n\t\t\t\t\t// \tel.classList.add(\"active\");\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(currentItems.indexOf(item) > -1){\r\n\t\t\t\t\t\tel.classList.add(\"active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n\t\t\t\t\tfor (let key in item.elementAttributes){\r\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\t\t\t\tkey = key.slice(1);\r\n\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction setCurrentItem(item, active){\r\n\r\n\t\tif(!multiselect && currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"focused\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item.element){\r\n\t\t\titem.element.classList.add(\"focused\");\r\n\t\t\tif(active){\r\n\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// function chooseItem(){\r\n\t// \thideList();\r\n\r\n\t// \tif(initialValue !== currentItem.value){\r\n\t// \t\tinitialValue = currentItem.value;\r\n\t// \t\tsuccess(currentItem.value);\r\n\t// \t}else{\r\n\t// \t\tcancel();\r\n\t// \t}\r\n\t// }\r\n\r\n\tfunction setItem(item) {\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index == -1){\r\n\t\t\tcurrentItems.push(item);\r\n\t\t\tsetCurrentItem(item, true);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\t}\r\n\r\n\tfunction unsetItem(index) {\r\n\t\tvar item = currentItems[index];\r\n\r\n\t\tif(index > -1){\r\n\t\t\tcurrentItems.splice(index, 1);\r\n\t\t\tif(item.element){\r\n\t\t\t\titem.element.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleItem(item) {\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tunsetItem(index);\r\n\t\t}else{\r\n\t\t\tif(multiselect !== true && currentItems.length >= multiselect){\r\n\t\t\t\tunsetItem(0);\r\n\t\t\t}\r\n\r\n\t\t\tsetItem(item);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\r\n\t}\r\n\r\n\tfunction chooseItem(item){\r\n\t\thideList();\r\n\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tif(item){\r\n\t\t\tinput.value = item.label;\r\n\t\t\tsuccess(item.value);\r\n\t\t}\r\n\r\n\t\tinitialDisplayValue = [item.value];\r\n\t}\r\n\r\n\r\n\tfunction chooseItems(silent){\r\n\t\tif(!silent){\r\n\t\t\thideList();\r\n\t\t}\r\n\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.value);\r\n\t\t});\r\n\r\n\t\tinitialDisplayValue = output;\r\n\r\n\t\tsuccess(output);\r\n\t}\r\n\r\n\tfunction fillInput(){\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.label);\r\n\t\t});\r\n\r\n\t\tinput.value = output.join(\", \");\r\n\r\n\t\tif(self.currentCell === false){\r\n\t\t\tchooseItems(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction unsetItems() {\r\n\r\n\t\tvar len = currentItems.length;\r\n\r\n\t\tfor(let i = 0; i < len; i++){\r\n\t\t\tunsetItem(0);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tcurrentItems = [];\r\n\r\n\t\tif(!listEl.parentNode){\r\n\t\t\tif(editorParams.values === true){\r\n\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\r\n\t\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\r\n\t\t\t}else{\r\n\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\r\n\r\n\t\t\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tblurable = false;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tblurable = true;\r\n\t\t\t\t}, 10);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\tfunction scrollTovalue(char){\r\n\r\n\t\tclearTimeout(searchWordTimeout);\r\n\r\n\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\r\n\t\tsearchWord += character.toLowerCase();\r\n\r\n\t\tvar match = dataItems.find((item) => {\r\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tsetCurrentItem(match, !multiselect);\r\n\t\t}\r\n\r\n\t\tsearchWordTimeout = setTimeout(() => {\r\n\t\t\tsearchWord = \"\";\r\n\t\t}, 800)\r\n\t}\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\tinput.style.cursor = \"default\";\r\n\tinput.readOnly = (this.currentCell != false);\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\r\n\r\n\t// if(editorParams.values === true){\r\n\t// \tparseItems(getUniqueColumnValues(), initialValue);\r\n\t// }else if(typeof editorParams.values === \"string\"){\r\n\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\r\n\t// }else{\r\n\t// \tparseItems(editorParams.values || [], initialValue);\r\n\t// }\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tif(!input.value){\r\n\t\t\tunsetItems();\r\n\t\t\tchooseItems();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < dataItems.length - 1)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < dataItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\t// chooseItem();\r\n\r\n\t\t\tif(multiselect){\r\n\t\t\t\ttoggleItem();\r\n\t\t\t}else{\r\n\t\t\t\tchooseItem();\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(self.currentCell === false){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\r\n\t\t\t\tscrollTovalue(e.keyCode);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tchooseItems();\r\n\t\t\t}else{\r\n\t\t\t\tcancelItem();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tif(!blockListShow){\r\n\t\t\tshowList();\r\n\t\t}\r\n\t});\r\n\r\n\t//style list element\r\n\tlistEl = document.createElement(\"div\");\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\nimport maskInput from '../../inputMask.js';\r\n\r\n//autocomplete\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\"),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tallItems = [],\r\n\tdisplayItems = [],\r\n\tvalues = [],\r\n\tcurrentItem = false,\r\n\tblurable = true,\r\n\tuniqueColumnValues = false;\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"search\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style list element\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\tblurable = false;\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tblurable = true;\r\n\t\t}, 10);\r\n\t});\r\n\r\n\r\n\tfunction genUniqueColumnValues(){\r\n\t\tif(editorParams.values === true){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues();\r\n\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList){\r\n\t\t\t\tif(editorParams.sortValuesList == \"asc\"){\r\n\t\t\t\t\toutput = Object.keys(output).sort();\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput = Object.keys(output).sort().reverse();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\toutput = Object.keys(output);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\r\n\t\t}\r\n\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfunction filterList(term, intialLoad){\r\n\t\tvar matches = [],\r\n\t\tvalues, items, searchEl;\r\n\r\n\t\t//lookup base values list\r\n\t\tif(uniqueColumnValues){\r\n\t\t\tvalues = uniqueColumnValues;\r\n\t\t}else{\r\n\t\t\tvalues = editorParams.values || [];\r\n\t\t}\r\n\r\n\t\tif(editorParams.searchFunc){\r\n\t\t\tmatches = editorParams.searchFunc(term, values);\r\n\r\n\t\t\tif(matches instanceof Promise){\r\n\r\n\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\r\n\r\n\t\t\t\tmatches.then((result) => {\r\n\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\titems = parseItems(values);\r\n\r\n\t\t\tif(term === \"\"){\r\n\t\t\t\tif(editorParams.showListOnEmpty){\r\n\t\t\t\t\tmatches = items;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\titems.forEach(function(item){\r\n\t\t\t\t\tif(item.value !== null || typeof item.value !== \"undefined\"){\r\n\t\t\t\t\t\tif(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){\r\n\t\t\t\t\t\t\tmatches.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfillListIfNotEmpty(matches, intialLoad);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addNotice(notice){\r\n\t\tvar searchEl = document.createElement(\"div\");\r\n\r\n\t\tclearList();\r\n\r\n\t\tif(notice !== false){\r\n\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\r\n\t\t\tsearchEl.tabIndex = 0;\r\n\r\n\t\t\tif(notice instanceof Node){\r\n\t\t\t\tsearchEl.appendChild(notice);\r\n\t\t\t}else{\r\n\t\t\t\tsearchEl.innerHTML = notice;\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(searchEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parseItems(inputValues){\r\n\t\tvar itemList = [];\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\r\n\t\t\t\tvar item = {};\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\r\n\t\t\t\t\titem.value = value.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\r\n\t\t\t\t\titem.value = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttitle:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tfunction clearList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\t}\r\n\r\n\tfunction fillListIfNotEmpty(items, intialLoad){\r\n\t\tif(items.length){\r\n\t\t\tfillList(items, intialLoad);\r\n\t\t}else{\r\n\t\t\tif(editorParams.emptyPlaceholder){\r\n\t\t\t\taddNotice(editorParams.emptyPlaceholder);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillList(items, intialLoad){\r\n\t\tvar current = false;\r\n\r\n\t\tclearList();\r\n\r\n\t\tdisplayItems = items;\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\tel.innerHTML = item.title;\r\n\r\n\t\t\t\tel.addEventListener(\"click\", function(e){\r\n\t\t\t\t\tsetCurrentItem(item);\r\n\t\t\t\t\tchooseItem();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\t\t\t\tif(intialLoad && item.value == initialValue){\r\n\t\t\t\t\tinput.value = item.title;\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item === currentItem){\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\r\n\t\tif(!current){\r\n\t\t\tsetCurrentItem(false);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction chooseItem(){\r\n\t\thideList();\r\n\r\n\t\tif(currentItem){\r\n\t\t\tif(initialValue !== currentItem.value){\r\n\t\t\t\tinitialValue = currentItem.value;\r\n\t\t\t\tinput.value = currentItem.title;\r\n\t\t\t\tsuccess(currentItem.value);\r\n\t\t\t}else{\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(editorParams.freetext){\r\n\t\t\t\tinitialValue = input.value;\r\n\t\t\t\tsuccess(input.value);\r\n\t\t\t}else{\r\n\t\t\t\tif(editorParams.allowEmpty && input.value === \"\"){\r\n\t\t\t\t\tinitialValue = input.value;\r\n\t\t\t\t\tsuccess(input.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tif(!listEl.parentNode){\r\n\t\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentItem(item, showInputValue){\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item && item.element){\r\n\t\t\titem.element.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsetCurrentItem(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < displayItems.length - 1)){\r\n\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < displayItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\t// e.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tchooseItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 36: //home\r\n\t\t\tcase 35: //end\r\n\t\t\t//prevent table navigation while using input element\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"keyup\", function(e){\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //up arrow\r\n\t\t\tcase 40: //right arrow\r\n\t\t\tcase 13: //enter\r\n\t\t\tcase 27: //escape\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tfilterList(input.value);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tfilterList(input.value);\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tchooseItem();\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tvar value = initialDisplayValue;\r\n\t\tgenUniqueColumnValues();\r\n\t\tshowList();\r\n\t\tinput.value = value;\r\n\t\tfilterList(value, true);\r\n\t});\r\n\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\tgenUniqueColumnValues();\r\n\tinput.value = initialDisplayValue;\r\n\tfilterList(initialDisplayValue, true);\r\n\r\n\treturn input;\r\n};","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false;\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn input.checked;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(cell, e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.table.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(cell = this.currentCell, e){\r\n\t\tvar nextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(cell = this.currentCell, e){\r\n\t\tvar nextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tif(cancel){\r\n\t\t\t\tif(cell.column.modules.validate && this.table.modExists(\"validate\")){\r\n\t\t\t\t\tthis.table.modules.validate.cellValidate(cell);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = true;\r\n\r\n\t\t\t\tif(cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\"){\r\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\tif(valid !== true){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tif(cell.modules.validate){\r\n\t\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;\r\n","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\r\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\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\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\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\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\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\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.styleCells[index] || styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.styleCells[index] || styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\t\tthis.tableInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.tableInitialized = true;\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\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);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft + parseInt(this.table.columnManager.element.style.marginLeft);\r\n\r\n\t\t\t\t\tif(left !== headerPos){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.headerElement.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.tableInitialized){\r\n\t\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\t\tthis.reloadData();\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters());\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tsign = \"\",\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tif(floatVal < 0){\r\n\t\tfloatVal = Math.abs(floatVal);\r\n\t\tsign = negativeSign;\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\twhile (rgx.test(integer)){\r\n\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t}\r\n\r\n\treturn after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = data[formatterParams.labelField];\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = inputFormat === \"iso\" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat);\r\n\r\n\t\tif(newDatetime.isValid){\r\n\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.shiftTimezone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\r\n\t\t\tif(invalid === true || !value){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\t\r\n\t\tvar newDatetime = inputFormat === \"iso\" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat);\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\t// return moment.duration(newDatetime.diff(date)).humanize(suffix);\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1 || \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\tvar blocked = false;\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\r\n\t\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\t\tif(!blocked){\r\n\t\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tblocked = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\tblocked = true;\r\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\t\tthis.blocked = true;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\t\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\r\n\t}\r\n\t\r\n\tblockLayout(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\t\r\n\tunblockLayout(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n\t\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\t\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\t\t\r\n\t\tif(!column.isGroup){\r\n\t\t\t\r\n\t\t\tif(this.frozenCheck(column)){\r\n\t\t\t\t\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\t\t\t\t\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.active = true;\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfrozenCheck(column){\r\n\t\tvar frozen = false;\r\n\t\t\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\t\t\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\t\t\r\n\t\treturn frozen;\r\n\t}\r\n\t\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\t\t\t\r\n\t\t\tthis.calcMargins(true);\r\n\t\t\t\r\n\t\t\tthis.layoutColumnPosition();\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t//calculate margins for rows\r\n\tcalcMargins(scroll){\r\n\t\t\r\n\t\tif(!scroll){\r\n\t\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\t\t\t\r\n\t\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\t\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\t\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\t\tvar leftParents = [];\r\n\t\t\r\n\t\tvar leftMargin = 0;\r\n\t\tvar rightMargin = 0;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\t\r\n\t\t\tcolumn.modules.frozen.margin = (leftMargin + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tleftMargin += column.getWidth();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\trightMargin += column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - rightMargin) + \"px\";\r\n\t\t\t\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\t\r\n\t//layout columns appropriately\r\n\tlayout(){\r\n\t\tif(this.active && !this.blocked){\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\t\t\r\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\r\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\r\n\t\t}\r\n\t\t\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tlayoutElement(element, column){\r\n\t\t\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\t\t\t\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\t\t\t\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\t\t\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trows.push(row);\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\t\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.element = false;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\t\t\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\t\t\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\tif(row.modules){\r\n\t\t\t\t\tdelete row.modules.group;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.arrowElement = false;\r\n\t\tthis.elementContents = false;\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\t\t\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\taddBindings(){\r\n\t\tvar toggleElement;\r\n\t\t\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\t\t\t\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\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);\r\n\t\t\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\t\r\n\t_addRowToGroup(row){\r\n\t\t\r\n\t\tvar level = this.level + 1;\r\n\t\t\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\t\t\t\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\t\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\t\t\r\n\t\trow.updateData(data);\r\n\t\t\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\t\t\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\trow.modules.group = this;\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\t\r\n\tscrollHeader(left){\r\n\t\tif(this.arrowElement){\r\n\t\t\tthis.arrowElement.style.marginLeft = left;\r\n\t\t\t\r\n\t\t\tthis.groupList.forEach(function(child){\r\n\t\t\t\tchild.scrollHeader(left);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowIndex(row){}\r\n\t\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\t\t\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\t\t\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\t\t\t\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\t\t\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\t\t\t\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\toutput.push(this);\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\t\t\t\t\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\t\t\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\t\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\t\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\t\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tvar prev = this.generateElement();\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\t\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tif(typeof this.visible == \"function\"){\r\n\t\t\t\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\t\t\t\t\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\t\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\t\r\n\t////////////// Standard Row Functions //////////////\r\n\t\r\n\tgetElement(){\r\n\t\treturn this.elementContents ? this.element : this.generateElement();\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.addBindings = false;\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\t\t\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\t// this.addBindings();\r\n\t\t\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\t\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\t\t\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\t\r\n\treinitializeHeight(){}\r\n\t\r\n\tcalcHeight(){}\r\n\t\r\n\tsetCellHeight(){}\r\n\t\r\n\tclearCellHeight(){}\r\n\t\r\n\tdeinitializeHeight(){}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureGroupSetup(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.initialize();\r\n\t\t}else{\r\n\t\t\tthis.configureGroupSetup();\r\n\t\t}\r\n\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.configureGroupSetup();\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\r\n\r\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList = [];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","import Module from '../../core/Module.js';\r\nimport Row from '../../core/row/Row.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Column from '../../core/column/Column.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\r\n\t\t\tthis.parseTable();\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.originalElement,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for Tabulator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for Tabulator inline options\r\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","import csv from './importers/csv.js';\r\nimport json from './importers/json.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n};","function csvImporter(input){\r\n var data = [],\r\n row = 0, \r\n col = 0,\r\n inQuote = false;\r\n \r\n //Iterate over each character\r\n for (let index = 0; index < input.length; index++) {\r\n let char = input[index], \r\n nextChar = input[index+1]; \r\n \r\n //Initialize empty row\r\n if(!data[row]){\r\n data[row] = [];\r\n }\r\n\r\n //Initialize empty column\r\n if(!data[row][col]){\r\n data[row][col] = \"\";\r\n }\r\n \r\n //Handle quotation mark inside string\r\n if (char == '\"' && inQuote && nextChar == '\"') { \r\n data[row][col] += char; \r\n index++;\r\n continue; \r\n }\r\n \r\n //Begin / End Quote\r\n if (char == '\"') { \r\n inQuote = !inQuote;\r\n continue;\r\n }\r\n \r\n //Next column (if not in quote)\r\n if (char == ',' && !inQuote) { \r\n col++;\r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CRLF) \r\n if (char == '\\r' && nextChar == '\\n' && !inQuote) { \r\n col = 0; \r\n row++; \r\n index++; \r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CR or LF) \r\n if ((char == '\\r' || char == '\\n') && !inQuote) { \r\n col = 0;\r\n row++;\r\n continue; \r\n }\r\n\r\n //Normal Character, append to column\r\n data[row][col] += char;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport default csvImporter;","export default function(input){\r\n try {\r\n return JSON.parse(input);\r\n } catch(e) {\r\n console.warn(\"JSON Import Error - File contents is invalid JSON\", e);\r\n return Promise.reject();\r\n }\r\n}","import Module from '../../core/Module.js';\r\n\r\nimport defaultImporters from './defaults/importers.js';\r\n\r\nclass Import extends Module{\r\n \r\n constructor(table){\r\n super(table);\r\n \r\n this.registerTableOption(\"importFormat\");\r\n this.registerTableOption(\"importReader\", \"text\");\r\n }\r\n \r\n initialize(){\r\n this.registerTableFunction(\"import\", this.importFromFile.bind(this));\r\n\r\n if(this.table.options.importFormat){\r\n this.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\r\n this.subscribe(\"data-load\", this.loadData.bind(this), 10);\r\n }\r\n }\r\n\r\n loadDataCheck(data){\r\n return typeof data === \"string\";\r\n }\r\n\r\n loadData(data, params, config, silent, previousData){\r\n return this.importData(this.lookupImporter(), data)\r\n .then(this.structureData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import data\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n\r\n lookupImporter(importFormat){\r\n var importer;\r\n \r\n if(!importFormat){\r\n importFormat = this.table.options.importFormat;\r\n }\r\n \r\n if(typeof importFormat === \"string\"){\r\n importer = Import.importers[importFormat];\r\n }else{\r\n importer = importFormat;\r\n }\r\n\r\n if(!importer){\r\n console.error(\"Import Error - Importer not found:\", importFormat);\r\n }\r\n \r\n return importer;\r\n }\r\n \r\n importFromFile(importFormat, extension){\r\n var importer = this.lookupImporter(importFormat);\r\n \r\n if(importer){\r\n return this.pickFile(extension)\r\n .then(this.importData.bind(this, importer))\r\n .then(this.structureData.bind(this))\r\n .then(this.setData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import file\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n }\r\n \r\n pickFile(extensions){\r\n return new Promise((resolve, reject) => {\r\n var input = document.createElement(\"input\");\r\n input.type = \"file\";\r\n input.accept = extensions;\r\n \r\n input.addEventListener(\"change\", (e) => {\r\n var file = input.files[0],\r\n reader = new FileReader(),\r\n data;\r\n \r\n switch(this.table.options.importReader){\r\n case \"buffer\":\r\n reader.readAsArrayBuffer(file);\r\n break;\r\n\r\n case \"binary\":\r\n reader.readAsBinaryString(file);\r\n break;\r\n\r\n case \"url\":\r\n reader.readAsDataURL(file);\r\n break;\r\n\r\n case \"text\":\r\n default:\r\n reader.readAsText(file);\r\n }\r\n \r\n reader.onload = (e) => {\r\n resolve(reader.result)\r\n };\r\n \r\n reader.onerror = (e) => {\r\n console.warn(\"File Load Error - Unable to read file\");\r\n reject();\r\n };\r\n });\r\n \r\n input.click();\r\n });\r\n }\r\n \r\n importData(importer, fileContents){\r\n var data = importer.call(this.table, fileContents);\r\n \r\n if(data instanceof Promise){\r\n return data;\r\n }else{\r\n return data ? Promise.resolve(data) : Promise.reject();\r\n }\r\n }\r\n\r\n structureData(parsedData){\r\n var data = [];\r\n \r\n if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\r\n if(this.table.options.autoColumns){\r\n data = this.structureArrayToObject(parsedData);\r\n }else{\r\n data = this.structureArrayToColumns(parsedData);\r\n }\r\n\r\n return data;\r\n }else{\r\n return parsedData;\r\n }\r\n }\r\n\r\n structureArrayToObject(parsedData){\r\n var columns = parsedData.shift();\r\n\r\n var data = parsedData.map((values) => {\r\n var row = {};\r\n\r\n columns.forEach((key, i) => {\r\n row[key] = values[i];\r\n })\r\n\r\n return row;\r\n })\r\n\r\n return data;\r\n }\r\n\r\n structureArrayToColumns(parsedData){\r\n var data = [],\r\n columns = this.table.getColumns();\r\n\r\n //remove first row if it is the column names\r\n if(columns[0] && parsedData[0][0]){\r\n if(columns[0].getDefinition().title === parsedData[0][0]){\r\n parsedData.shift();\r\n }\r\n }\r\n \r\n //convert row arrays to objects\r\n parsedData.forEach((rowData) => {\r\n var row = {};\r\n\r\n rowData.forEach((value, index) => {\r\n var column = columns[index];\r\n\r\n if(column){\r\n row[column.getField()] = value;\r\n }\r\n })\r\n\r\n data.push(row);\r\n });\r\n\r\n return data;\r\n }\r\n \r\n setData(data){\r\n return this.table.setData(data);\r\n }\r\n}\r\n\r\nImport.moduleName = \"import\";\r\n\r\n//load defaults\r\nImport.importers = defaultImporters;\r\n\r\nexport default Import;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tgroup:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings)\r\n\t\t\tObject.assign(mergedBindings, bindings)\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tbindingList.forEach((item) => {\r\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\r\n\t\t\t\t\t\t});\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\r\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\r\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 89\"],\r\n};","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Menu extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.menuContainer = null;\r\n\t\tthis.menuElements = [];\r\n\t\tthis.blurEvent = this.hideMenu.bind(this);\r\n\t\tthis.escEvent = this.escMenu.bind(this);\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\tthis.positionReversedX = false;\r\n\t\t\r\n\t\tthis.currentComponent = null;\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\t\tthis.registerTableOption(\"menuContainer\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerClickMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.lookupMenuContainer();\r\n\t\t\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tlookupMenuContainer(){\r\n\t\t\r\n\t\tthis.menuContainer = this.table.options.menuContainer;\r\n\t\t\r\n\t\tif(typeof this.menuContainer === \"string\"){\r\n\t\t\tthis.menuContainer = document.querySelector(this.menuContainer);\r\n\t\t\t\r\n\t\t\tif(!this.menuContainer){\r\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.menuContainer , \"(defaulting to document body)\");\r\n\t\t\t}\r\n\t\t}else if (this.menuContainer === true){\r\n\t\t\tthis.menuContainer = this.table.element;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.menuContainer && !this.checkMenuContainerIsParent(this.menuContainer)){\r\n\t\t\tthis.menuContainer = false;\r\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.menuContainer , \"(defaulting to document body)\");\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.menuContainer){\r\n\t\t\tthis.menuContainer = document.body;\r\n\t\t}\r\n\t}\r\n\t\r\n\tcheckMenuContainerIsParent(container, element = this.table.element){\r\n\t\tif(container === element){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\treturn element.parentNode ? this.checkMenuContainerIsParent(container, element.parentNode) : false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextMenu\", \"headerClickMenu\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\r\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\r\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerMenu){\r\n\t\t\tthis.initializeColumnHeaderMenu(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\r\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\r\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderMenu(column){\r\n\t\tvar headerMenuEl;\r\n\t\t\r\n\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\r\n\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\t\t\r\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadMenuTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuEvent(menu, e, component){\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\r\n\t\t\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\t\r\n\tloadMenu(e, component, menu, parentEl){\r\n\t\tvar touch = !(e instanceof MouseEvent);\r\n\t\t\r\n\t\tvar menuEl = document.createElement(\"div\");\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\t\t\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.isOpen()){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.hideMenu();\r\n\t\t\tthis.menuElements = [];\r\n\t\t}\r\n\t\t\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\t\t\t\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\t\t\t\t\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.hideOldSubMenus(menuEl);\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\t\t\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.hideMenu();\r\n\t\t});\r\n\t\t\r\n\t\tthis.menuElements.push(menuEl);\r\n\t\tthis.positionMenu(menuEl, parentEl, touch, e);\r\n\t\t\r\n\t\tthis.currentComponent = component\r\n\t\t\r\n\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent())\r\n\t}\r\n\t\r\n\thideOldSubMenus(menuEl){\r\n\t\tvar index = this.menuElements.indexOf(menuEl);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tfor(let i = this.menuElements.length - 1; i > index; i--){\r\n\t\t\t\tvar el = this.menuElements[i];\r\n\t\t\t\t\r\n\t\t\t\tif(el.parentNode){\r\n\t\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.menuElements.pop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tpositionMenu(element, parentEl, touch, e){\r\n\t\tvar x, y, parentOffset;\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tx = touch ? e.touches[0].pageX : e.pageX;\r\n\t\t\ty = touch ? e.touches[0].pageY : e.pageY;\r\n\t\t\t\r\n\t\t\tif(this.menuContainer !== document.body){\r\n\t\t\t\tparentOffset = Helpers.elOffset(this.menuContainer);\r\n\t\t\t\t\r\n\t\t\t\tx -= parentOffset.left;\r\n\t\t\t\ty -= parentOffset.top;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.positionReversedX = false;\r\n\t\t}else{\r\n\t\t\tparentOffset = Helpers.elOffset(parentEl);\r\n\t\t\tx = parentOffset.left + parentEl.offsetWidth;\r\n\t\t\ty = parentOffset.top - 1;\r\n\t\t}\r\n\t\t\r\n\t\telement.style.top = y + \"px\";\r\n\t\telement.style.left = x + \"px\";\r\n\t\t\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\r\n\t\t}, 100);\r\n\t\t\r\n\t\tthis.menuContainer.appendChild(element);\r\n\t\t\r\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\r\n\t\tif((x + element.offsetWidth) >= this.menuContainer.offsetWidth || this.positionReversedX){\r\n\t\t\telement.style.left = \"\";\r\n\t\t\t\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.right = (this.menuContainer.offsetWidth - parentOffset.left) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.right = (this.menuContainer.offsetWidth - x) + \"px\";\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.positionReversedX = true;\r\n\t\t}\r\n\t\t\r\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\r\n\t\tif((y + element.offsetHeight) > this.menuContainer.offsetHeight) {\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.top = (parseInt(element.style.top) - element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.top = (parseInt(element.style.top) - element.offsetHeight) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisOpen(){\r\n\t\treturn !!this.menuElements.length;\r\n\t}\r\n\t\r\n\tescMenu(e){\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tthis.hideMenu();\r\n\t\t}\r\n\t}\r\n\t\r\n\thideMenu(){\t\r\n\t\tthis.menuElements.forEach((menuEl) => {\r\n\t\t\tif(menuEl.parentNode){\r\n\t\t\t\tmenuEl.parentNode.removeChild(menuEl);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\r\n\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\r\n\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n\t\twindow.removeEventListener(\"resize\", this.blurEvent);\r\n\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n\t\t\r\n\t\tif(this.currentComponent){\r\n\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\r\n\t\t\tthis.currentComponent = null;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\t\t\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\t\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\t\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableColumns){\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\t\t\r\n\t\tif(!column.modules.frozen){\r\n\t\t\tcolEl = column.getElement();\r\n\t\t\t\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\t\t\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\t\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\t\t\t\t\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\t\t\t\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\t\t\t\t\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\t\t\t\t\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement(),\r\n\t\theaderElement = this.table.columnManager.getElement(),\r\n\t\theadersElement = this.table.columnManager.getHeadersElement();\r\n\t\t\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\t\t\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\t\t\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\t\t\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\t\t\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\t\t\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\r\n\t\t\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\t\t\t\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\t\t\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\t\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\t\t\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\t\t\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\t\t\t\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\t\t\t\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\t\t\t\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\t\t\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\t\t\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","export default {};","import rows from './pageCounters/rows.js';\r\nimport pages from './pageCounters/pages.js';\r\n\r\n\r\nexport default {\r\n\trows:rows,\r\n\tpages:pages,\r\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\tvar el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\r\n\tif(totalRows){\r\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\r\n\t\t\r\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\r\n\t\t\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(ofEl);\r\n\t\tel.appendChild(totalEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}else{\r\n\t\tvalueEl.innerHTML = \" 0 \";\r\n\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}\r\n\t\r\n\treturn el;\r\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\r\n var el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\t\r\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tel.appendChild(showingEl);\r\n\tel.appendChild(valueEl);\r\n\tel.appendChild(ofEl);\r\n\tel.appendChild(totalEl);\r\n\tel.appendChild(rowsEl);\r\n\t\r\n\treturn el;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPageCounters from './defaults/pageCounters.js';\r\n\r\nclass Page extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\t\t\r\n\t\tthis.element = null;\r\n\t\tthis.pageCounterElement = null;\r\n\t\tthis.pageCounter = null;\r\n\t\t\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.remoteRowCountEstimate = null;\r\n\t\t\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\t\t\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\t\t\r\n\t\tthis.pageSizes = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\r\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\t\t\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\t\t\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\r\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\t\t\t\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePageCounter();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn {index, top}\r\n\t}\r\n\t\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\t\t\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\t\t\t\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\t\t\t\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\t\t\t\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generatePageSizeSelectList();\r\n\t}\r\n\t\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\t\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\t\t\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn Promise.reject();\r\n\t}\r\n\t\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\t\t\t\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\t\t\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\t\t\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\t\t\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\t\t\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\t\t\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\t\t\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\t\t\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\t\t\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\t\t\t\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\t\t\t\t\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializePageCounter(){\r\n\t\tvar counter = this.table.options.paginationCounter,\r\n\t\tpageCounter = null;\r\n\t\t\r\n\t\tif(counter){\r\n\t\t\tif(typeof counter === \"function\"){\r\n\t\t\t\tpageCounter = counter;\r\n\t\t\t}else{\r\n\t\t\t\tpageCounter = Page.pageCounters[counter];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(pageCounter){\r\n\t\t\t\tthis.pageCounter = pageCounter;\r\n\t\t\t\t\r\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\r\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup pagination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel, paginationCounterHolder;\r\n\t\t\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\t\t\t\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\t\t\t\t\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\t\t\t\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tif(this.table.options.paginationCounter){\r\n\r\n\t\t\t\t\tpaginationCounterHolder \r\n\r\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\r\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\r\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\r\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(paginationCounterHolder){\r\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.footerManager.append(this.pageCounterElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.table.footerManager.append(this.element, this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\t\t}\r\n\t\t\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\t\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\t\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\t\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\t\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\t\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set the maximum page\r\n\tsetMaxPage(max){\r\n\t\t\r\n\t\tmax = parseInt(max);\r\n\t\t\r\n\t\tthis.max = max || 1;\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t\r\n\t\tpage = parseInt(page);\r\n\t\t\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\t\t\t\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\t\t\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\t\t\r\n\t\tthis.trackChanges();\r\n\t}\r\n\t\r\n\t_setPageCounter(totalRows, size, currentRow){\r\n\t\tvar content;\r\n\t\t\r\n\t\tif(this.pageCounter){\r\n\r\n\t\t\tif(this.mode === \"remote\"){\r\n\t\t\t\tsize = this.size;\r\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\r\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\r\n\t\t\t}\r\n\r\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\r\n\t\t\t\r\n\t\t\tswitch(typeof content){\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\tif(content instanceof Node){\r\n\t\t\t\t\t\r\n\t\t\t\t\t//clear previous cell contents\r\n\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageCounterElement.appendChild(content);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(content != null){\r\n\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);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"undefined\":\r\n\t\t\t\tcase \"null\":\r\n\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.pageCounterElement.innerHTML = content;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\t\t\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\t\t\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\t\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\t\t\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\t\t\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\t\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\t\t\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\t\t\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\t\t\r\n\t\treturn button;\r\n\t}\r\n\t\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger()\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\t\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\t\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\t\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\t\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar actualRowPageSize = 0,\r\n\t\toutput, start, end, actualStartRow;\r\n\r\n\t\tvar actualRows = data.filter((row) => {\r\n\t\t\treturn row.type === \"row\";\r\n\t\t});\r\n\t\t\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\t\t\t\r\n\t\t\tthis.setMaxRows(data.length);\r\n\t\t\t\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageButtons();\r\n\t\t\t\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tlet row = data[i];\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\toutput.push(row);\r\n\r\n\t\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\t\tif(!actualStartRow){\r\n\t\t\t\t\t\t\tactualStartRow = row;\r\n\t\t\t\t\t\t}\t\r\n\r\n\t\t\t\t\t\tactualRowPageSize++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\r\n\t\t\t\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\t\t\tthis._setPageCounter(actualRows.length);\r\n\t\t\t\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrigger(){\r\n\t\tvar left;\r\n\t\t\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\t\t\t\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\t\t\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\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));\r\n\t\t\t\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\t\t\t\t\t\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\treturn data.data;\r\n\t}\r\n\t\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.containerElement;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\t\t\t\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\n//load defaults\r\nPage.pageCounters = defaultPageCounters;\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.slice(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.slice(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};\r\n","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.options.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.options.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\nPersistence.moduleInitOrder = 1;\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar self = this,\r\n\t\tpushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn self.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\t// if(this.table.options.resizableColumns){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCellHandles.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.layoutColumnHeader.bind(this));\r\n\t\t// }\r\n\t}\r\n\t\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.initializeColumn(\"cell\", cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutColumnHeader(column){\r\n\t\tthis.initializeColumn(\"header\", column, column.element);\r\n\t}\r\n\t\r\n\tinitializeColumn(type, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable;\r\n\t\t\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tcolumn.modules.resize = {variableHeight:variableHeight};\r\n\t\t}\r\n\t\t\r\n\t\tif(mode === true || mode == type){\r\n\t\t\t\r\n\t\t\tvar handle = document.createElement('div');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tvar prevHandle = document.createElement('div');\r\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tvar nearestColumn = column.getLastColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn && self._checkResizability(nearestColumn)){\r\n\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//reszie column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar col = column.getLastColumn(),\r\n\t\t\t\toldWidth;\r\n\t\t\t\t\r\n\t\t\t\tif(col && self._checkResizability(col)){\r\n\t\t\t\t\toldWidth = col.getWidth();\r\n\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tcol.reinitializeWidth(true);\r\n\r\n\t\t\t\t\tif(oldWidth !== col.getWidth()){\r\n\t\t\t\t\t\tself.dispatch(\"column-resized\", col);\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", col.getComponent());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar prevHandleDown = function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\t\t\t\t\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\r\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//resize column on double click\r\n\t\t\tprevHandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\t\t\t\t\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\telement.appendChild(handle);\r\n\t\t\telement.appendChild(prevHandle);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\t\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\t\t\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\t// self.table.columnManager.tempScrollBlock();\r\n\t\t\t\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\t\t\t\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tfunction mouseUp(e){\r\n\t\t\t\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\t\t\t\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\t\t\t\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(self.startWidth !== column.getWidth()){\r\n\t\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\t\t\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\t\t\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.startWidth = column.getWidth();\r\n\t\t\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate responsive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//determine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\r\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort((a, b) => {\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initializeResponsivity();\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\t\t\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\t\t\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\r\n\t\t\t\r\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\t\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\t\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\t\t\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\t\t\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\t\t\t\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\t\t\r\n\t\trow.modules.select = {selected:false};\r\n\t\t\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\t\t\t\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\t\r\n\thandleComplexRowClick(row, e){\r\n\t\tif(e.shiftKey){\r\n\t\t\tthis.table._clearSelection();\r\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\r\n\t\t\t\r\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\r\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\r\n\t\t\t\r\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\r\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\t\t\t\r\n\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\r\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\r\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\r\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.lastClickedRow = row;\r\n\t\t\t}else{\r\n\t\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.selectable !== true){\r\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\r\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectRows(toggledRows);\r\n\t\t\t}\r\n\t\t\tthis.table._clearSelection();\r\n\t\t}\r\n\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\tthis.toggleRow(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}else{\r\n\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\tthis.selectRows(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\t\t\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"string\":\r\n\t\t\t\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\t\t\t\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\t\t\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\t\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\t\t\r\n\t\tif(typeof rows == \"undefined\"){\r\n\t\t\t\r\n\t\t\trowCount = self.selectedRows.length;\r\n\t\t\t\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(rowCount){\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\t\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tgetSelectedRows(){\r\n\t\t\r\n\t\tvar rows = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\t\t\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\t\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\t\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\t\t\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\ta = format === \"iso\" ? DT.fromISO(String(a)) : DT.fromFormat(String(a), format);\r\n\t\tb = format === \"iso\" ? DT.fromISO(String(b)) : DT.fromFormat(String(b), format);\r\n\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData(true);\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.invalidCells = [];\r\n\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? !cell.modules.validate.invalid : true;\r\n\t}\r\n\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trow = row.getComponent();\r\n\r\n\t\t\tvar valid = row.validate();\r\n\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\r\n\t\tif(column.definition.validator){\r\n\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t_buildValidator(type, params){\r\n\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tvalid = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach((item) => {\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tvalid.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalid = valid.length ? valid : true;\r\n\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\r\n\t\tif(valid === true){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = true;\r\n\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","//tabulator with all modules installed\r\nimport {default as Tabulator} from './Tabulator.js';\r\nimport * as modules from '../core/modules/optional.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nclass TabulatorFull extends Tabulator {};\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(TabulatorFull, modules);\r\n\r\nexport default TabulatorFull;"],"names":["CoreFeature","table","data","silent","this","dataLoader","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","options","value","module","ColumnComponent","column","_column","type","Proxy","get","target","name","receiver","componentFunctionBinder","handle","getElement","getDefinition","getField","getTitleDownload","cells","forEach","cell","push","getComponent","visible","isGroup","columns","show","hide","output","length","parent","Column","columnManager","scrollToColumn","to","after","toColumn","findColumn","moveColumn","console","warn","nextCol","nextColumn","prevCol","prevColumn","updates","updateDefinition","getWidth","width","result","reinitializeWidth","setWidth","renderer","rerenderColumns","CellComponent","_cell","getValue","getOldValue","initialValue","row","getData","mutate","setValue","setValueActual","checkHeight","Cell","element","oldValue","height","minWidth","component","loaded","build","generateElement","_configureCell","getFieldValue","document","createElement","className","setAttribute","field","style","textAlign","hozAlign","vertAlign","display","alignItems","top","bottom","middle","justifyContent","left","right","center","definition","cssClass","split","classList","add","tooltipGenerationMode","addEventListener","e","_this2","_generateTooltip","val","_this3","innerHTML","Node","firstChild","removeChild","appendChild","tooltip","containerOnly","layoutElement","setValueProcessData","cellRendered","cellEdited","call","dispatchExternal","subscribedExternal","rowManager","changed","setFieldValue","_generateContents","widthStyled","offsetWidth","minWidthStyled","maxWidth","maxWidthStyled","reinitializeHeight","heightStyled","offsetHeight","redrawBlock","parentNode","deleteCell","calcs","getCellIndex","def","_this","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleDownload","titleFormatterRendered","mapDefinitions","setField","maxInitialWidth","widthFixed","i","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","bindModuleColumns","el","defaults","columnDefaults","optionsList","generate","defaultOptionList","Object","keys","indexOf","title","nestedFieldSeparator","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","headerTooltip","langBind","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","setTooltip","_this4","dblTap","tapHold","tap","headerClick","_this5","headerDblClick","headerContext","headerTap","passive","headerDblTap","clearTimeout","setTimeout","headerTapHold","_this6","setMinWidth","parseInt","setMaxWidth","headerHozAlign","_buildColumnHeaderTitle","editableTitle","stopPropagation","focus","_this7","text","_formatColumnHeaderTitle","contents","_this8","dataObj","structure","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","minHeight","paddingTop","verticalAlign","clearVerticalAlign","formatter","rowNumColumn","getFirstColumn","getLastColumn","getTopColumn","updateBranches","colDefs","responsiveToggle","verticalAlignHeaders","matchChildWidths","childWidth","child","index","splice","setWidthActual","isNaN","Math","floor","clientWidth","max","min","rows","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","ceil","getBoundingClientRect","Promise","resolve","reject","_this9","cellCount","deregisterColumn","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","force","fitToData","clearWidth","setTo","error","assign","addColumn","then","_this10","defaultOptions","Helpers","box","window","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","obj","clone","list","objectProto","__proto__","arrayProto","Array","isArray","subject","match","copy","_typeof","findIndex","item","unshift","deepClone","OptionsList","msgType","registeredDefaults","option","userOptions","debugInvalidOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","tableElement","verticalFillMode","callback","update","blockRedraw","dir","includingBuffer","getDisplayRows","rowEl","remove","clearRows","clearColumns","renderRows","renderColumns","rerenderRows","position","ifVisible","rowIndex","offset","scrollToRowIfVisible","elVisible","elOffset","scrollToRowPosition","scrollToRowNearestTop","scrollToRow","scrollHeight","scrollTop","offsetTop","BaiscHorizontal","VirtualDomHorizontal","leftCol","rightCol","scrollLeft","vDomScrollPosLeft","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","windowBuffer","visibleRows","initialized","isFitData","compatibilityCheck","layoutCheck","vertScrollListen","ok","find","col","frozen","startsWith","clearVisRowCache","dataChange","scroll","buffer","columnsByIndex","old","cols","colPos","clear","calcWindowBuffer","config","leftPos","rightPos","fitDataCheck","vdomHoz","paddingLeft","paddingRight","reinitChanged","reinitializeRows","initializeRow","reinitializeRow","change","colEnd","generateCells","layoutRefresh","getVisibleRows","diff","abs","addColRight","removeColLeft","addColLeft","removeColRight","start","end","changes","getCell","fitDataColActualWidthCheck","prepend","ex","message","newWidth","widthDiff","colPositionAdjust","ColumnManager","blockHozScrollEvent","headersElement","columnsByField","defaultColumnOptions","initializeRenderer","createHeadersElement","createHeaderElement","insertBefore","scrollHorizontal","renderClass","renderers","RendererVirtualDomHorizontal","RendererBasicHorizontal","renderHorizontal","initialize","headerVisible","hozAdjust","scrollWidth","marginLeft","scrollColumns","sorter","definitions","autoColumnsDefinitions","setColumns","_addColumn","_reIndexColumns","redraw","before","nextToColumn","colEl","topColumn","parentIndex","nextEl","nextSibling","columnRendered","getHeight","columnHeaderVertAlign","adjustTableSize","_getSelf","HTMLElement","root","matches","active","structured","from","moveColumnActual","reinitialize","_moveColumnInArray","getComponents","updateRows","toIndex","fromIndex","concat","adjust","scrollToColumnPosition","scrollToColumnIfVisible","offsetLeft","generateCell","totalWidth","fixedWidth","colWidth","layoutMode","resetScroll","footerManager","RowComponent","_row","transform","getCells","getRowPosition","moveToRow","updateData","normalizeHeight","nextRow","prevRow","Row","manualHeight","outerHeight","created","setData","create","deleteCells","renderRowCells","rowFormatter","rerenderRowCells","children","maxHeight","resizableRows","setHeight","clearHeight","updatedData","newRowData","tempData","attrname","JSON","parse","getColumnsByFieldRoot","findCell","nextDisplayRow","prevDisplayRow","toRow","findRow","moveRowActual","refreshActiveData","deleteActual","getRowIndex","detatchModules","deleteRow","group","BaiscVertical","visibility","onlyGroupHeaders","styleRow","rowTop","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topRow","topOffset","deinitializeHeight","topDiff","bottomDiff","margin","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","renderVerticalBuffer","topEdge","bottomEdge","topFound","bottomRow","slice","forceMove","holder","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","containerHeight","rowHeight","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","placeholder","placeholderContents","firstRender","renderMode","fixedHeight","activeRowsPipeline","activeRows","activeRowsCount","displayRows","displayRowsCount","redrawBlockRestoreConfig","redrawBlockRenderInPosition","dataPipeline","displayPipeline","initializePlaceholder","leftDir","topDir","_positionPlaceholder","scrollRows","renderInPosition","columnsChanged","pagination","_setDataActual","reRenderInPosition","autoColumns","generateColumnsFromRowData","_wipeElements","wipe","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","regenerateRowNumbers","_showPlaceholder","pos","addRowActual","findAddRowPos","reverse","addRow","_clearPlaceholder","addRowPos","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","getRows","handler","priority","sort","a","b","skipStage","stage","cascadeOrder","refreshPipelines","renderTable","layoutColumnsOnNewData","resetDisplayRows","setDisplayRows","viewable","RendererVirtualDomVertical","RendererBasicVertical","renderVertical","_clearTable","renderEmptyScroll","initialHeight","otherHeight","external","resize","tableWidth","browser","event","createEvent","initEvent","dispatchEvent","Event","FooterManager","containerElement","createContainerElement","links","initializeElement","footerElement","querySelector","activate","deactivate","link","footerRedraw","InteractionManager","abortClasses","previousTargets","listeners","componentMap","pseudoTrackers","subscriber","pseudoTracking","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","pseudoMouseEnter","pseudoMouseLeave","leaveList","linkedKeys","filter","includes","values","comp","subscriptionChanged","clearWatchers","added","bindPseudoEvents","updateEventListeners","track","removeEventListener","path","composedPath","targets","findTargets","bindComponents","triggerEvents","targetMatches","previousTarget","closest","ComponentFunctionBinder","bindings","funcName","hanlder","DataLoader","loaderElement","createLoaderElement","msgElement","createMsgElement","loadingElement","errorElement","requestOrder","loading","template","dataLoaderLoading","trim","firstElementChild","dataLoaderError","params","replace","requestNo","showLoader","mapParams","dataSendParams","response","objectInvert","dataReceiveParams","rowData","hideLoader","showError","dataLoaderErrorTimeout","map","langText","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifiySubscriptionChange","notifiers","args","shift","callResult","apply","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","confirmed","TableRegistry","tables","query","results","querySelectorAll","matchElement","Tabulator","lookupTable","Module","_handler","register","func","registerDataPipelineHandler","registerDisplayPipelineHandler","responsiveLayout","modExists","fitData","reinitializeColumnWidths","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","registerTableOption","registerColumnOption","modes","moduleName","defaultModes","Localize","locale","lang","langList","langs","headerFilterPlaceholder","setHeaderFilterPlaceholder","installLang","setLocale","registerTableFunction","getLang","headerFilters","_setLangProp","desiredLocale","navigator","language","toLowerCase","prefix","traverseLang","trans","prop","_executeBindings","pathArray","_getLangElement","level","rootPath","binding","Comms","receive","selectors","connections","con","action","connection","tableComms","commsReceived","ModuleBinder","tabulator","bindStaticFuctionality","bindModules","coreModules","moduleBindings","extendModule","property","source","registerModule","mod","registerModuleBinding","findTable","prototype","orderedMods","unOrderedMods","moduleCore","modulesCore","moduleInitOrder","modulesRegular","core","mods","interactionMonitor","browserSlow","browserMobile","rtl","originalElement","initializeCoreSystems","_create","_clearObjectPointers","_mapDeprecatedFunctionality","debugEventsExternal","debugEventsInternal","InteractionMonitor","getSelection","empty","removeAllRanges","selection","_rtlCheck","_buildElement","_initializeTable","_loadInitialData","getComputedStyle","textDirection","direction","reactiveData","newElement","tagName","attributes","replaceChild","_detectBrowser","deregister","ua","userAgent","vendor","opera","test","restoreRedraw","blockActiveLoad","clearData","getDataCount","responses","addRows","newRows","getRowFromPosition","foundRows","fromRow","getDefinitionTree","fromColumn","plugin","required","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","Accessor","allowedTypes","initializeColumn","transformRow","accessor","charAt","toUpperCase","lookupAccessor","accessors","rowComponent","traverse","colCompnent","generateParamsList","serializeParams","encoded","encodeURIComponent","join","headers","body","url","stringify","form","FormData","append","Ajax","urlGenerator","loaderPromise","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxURL","setUrl","setDefaultConfig","ajaxConfig","getUrl","requestDataCheck","requestParams","requestData","ajaxParams","previousData","generateConfig","sendRequest","defaultConfig","method","ajaxRequesting","ajaxResponse","contentType","ajaxContentType","Accept","location","origin","credentials","fetch","json","status","statusText","defaultContentTypeFormatters","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboard","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","generateExportList","clipboardCopyConfig","clipboardCopyStyled","genereateHTMLTable","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","checkPaseOrigin","getPasteData","mutateData","mutator","valid","edit","currentCell","updateOrAddData","insert","addData","headerFindSuccess","columnMap","CalcComponent","calcParams","precision","reduce","sum","Number","toFixed","parseFloat","String","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","cellValueChanged","initializeColumnCheck","rowsUpdated","recalcActiveRows","recalcActiveRowsRefresh","tableRedraw","getResults","userRecalc","recalc","groupBy","recalcRowGroup","dataTreeStartExpanded","dataTree","recalcAll","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","rowsToData","generateRow","frozenColumns","recalcGroup","groupRows","getRowGroup","getChildGroups","generateRowData","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","disable","enable","format","getFormatter","paramKey","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","groups","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","registerComponentFunction","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","isRowExpanded","dummyEl","dataTreeChildField","dataTreeChildIndent","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","layoutRow","rowDelete","rowDataChanged","columnMoving","initializeElementField","registerDisplayHandler","firstCol","getFirstVisibleColumn","dataTreeElementColumn","getTreeChildren","redrawNeeded","refreshData","childArray","controlEl","generateControlElement","cloneNode","marginRight","getPropertyValue","oldControl","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","sub","childData","childRow","childIndex","findChildIndex","recurse","csv","setFileContents","delimiter","fileContents","depth","bom","jsonLines","pdf","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","parseRow","styles","content","colSpan","rowSpan","orientation","unit","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","xlsx","sheetName","workbook","XLSX","utils","book_new","tableFeatures","generateSheet","merges","worksheet","s","c","r","j","Date","sheet_add_aoa","encode_range","SheetNames","Sheets","sheetOnly","sheets","sheet","commsSend","intercept","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","bookType","bookSST","Download","blob","download","downloadToTab","filename","interceptCallback","downloadFunc","downloaders","mime","triggerDownload","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","Blob","downloadReady","URL","createObjectURL","msSaveOrOpenBlob","click","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","keyCode","maskAutoFill","defaultDownloaders","input","onRendered","success","cancel","editorParams","cellValue","search","padding","boxSizing","elementAttributes","getAttribute","onChange","preventScroll","textarea","vertNav","verticalNavigation","whiteSpace","getRow","heightNow","selectionStart","stopImmediatePropagation","number","step","blurFunc","self","cellEl","initialDisplayValue","defaultValue","listEl","multiselect","dataItems","currentItem","displayItems","currentItems","blurable","blockListShow","searchWord","searchWordTimeout","getUniqueColumnValues","getColumnByField","getColumn","parseItems","inputValues","curentValues","dataList","displayList","processComplexListItem","label","itemParams","setItem","sortValuesList","listItemFormatter","toggleItem","chooseItem","fillList","setCurrentItem","scrollIntoView","behavior","block","inline","fillInput","unsetItem","hideList","chooseItems","cancelItem","cursor","readOnly","len","unsetItems","character","fromCharCode","scrollTovalue","showList","autocomplete","uniqueColumnValues","genUniqueColumnValues","filterList","term","intialLoad","items","searchFunc","addNotice","searchingPlaceholder","fillListIfNotEmpty","err","showListOnEmpty","notice","searchEl","clearList","itemList","current","emptyPlaceholder","freetext","allowEmpty","showInputValue","star","maxStars","getElementsByTagName","size","stars","starsHolder","createElementNS","starChange","buildStar","starHolder","nextStar","blur","changeValue","overflow","textOverflow","progress","mouseDrag","mouseDragWidth","percent","bar","updateValue","calcVal","round","backgroundColor","screenX","tickCross","tristate","indetermValue","indeterminateValue","indetermState","marginTop","checked","indeterminate","Edit","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellisEdited","clearEdited","editCell","cellCancelEdit","bindEditor","columnDeleteCheck","rowDeleteCheck","cancelEdit","keybindingNavigateNext","newRow","edited","nextCell","findNextEditableCell","getIndex","findPrevEditableCell","allowEdit","check","prevCell","editor","editable","validate","cellValidate","clearEditor","variableHeight","cellEditCancelled","contains","button","forceEdit","focusCellNoEvent","getRenderMode","leftEdge","rightEdge","leftMargin","rightMargin","cellEditor","rendered","focusScrollAdjust","cellClick","cellEditing","validationMode","editIndex","invalid","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","genereateTableElement","selectRow","selectedRows","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","genereateHeaderElement","genereateGroupElement","genereateCalcElement","genereateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","classNames","generator","isVisible","cellWrapper","formatCells","formatExportValue","align","renderedCallback","htmlOutputConfig","props","lookup","fromStyle","filterVal","rowVal","filterParams","RegExp","keywords","separator","keyword","matchAll","endsWith","Filter","headerFilterColumns","prevHeaderFilterChangeCheck","tableInitialized","searchRows","searchData","userSetFilter","userRefreshFilter","userAddFilter","getFilters","userSetHeaderFilterFocus","userGetHeaderFilterValue","userSetHeaderFilterValue","getHeaderFilters","userRemoveFilter","userClearFilter","userClearHeaderFilter","setHeaderFilterFocus","reloadHeaderFilter","getHeaderFilterValue","setHeaderFilterValue","initializeColumnHeaderFilter","hideHeaderFilterElements","showHeaderFilterElements","tableBuilt","filterMode","remoteFilterParams","registerDataHandler","initialFilter","setFilter","initialHeaderFilter","refreshFilter","addFilter","removeFilter","all","clearFilter","clearHeaderFilter","headerFilter","setHeaderFilterColumnPlaceholder","filterFunc","filterType","tagType","attrType","filterChangeCheck","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","headerElement","headerFilterEmptyCheck","headerFilterParams","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","reloadData","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","_this11","subFilter","_this12","defaultFilters","plaintext","formatterParams","emptyToSpace","sanitizeHTML","money","integer","decimal","rgx","floatVal","sign","decimalSym","thousandSym","thousand","negativeSign","symbolAfter","urlPrefix","labelField","urlField","image","src","urlSuffix","truthy","allowTruthy","tick","tickElement","cross","crossElement","datetime","DT","DateTime","luxon","inputFormat","outputFormat","invalidPlaceholder","newDatetime","fromISO","fromFormat","isValid","timezone","shiftTimezone","toFormat","datetimediff","suffix","humanize","date","now","traffic","percentValue","colors","color","legend","legendColor","legendAlign","barEl","barContainer","legendEl","holderEl","buttonTick","buttonCross","rownum","responsiveCollapse","toggleList","isOpen","rowSelection","checkbox","selectableRangeMode","toggleSelect","handleComplexRowClick","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","leftColumns","rightColumns","rightPadding","initializationMode","scrollEndTimer","layoutCell","blockLayout","unblockLayout","edge","frozenCheck","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","layoutGroupCalcs","groupList","allCells","leftParents","parentEl","getColGroupParentElement","getTableElement","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","styleRows","GroupComponent","groupManager","toggleVisibility","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","elementContents","arrowElement","createElements","addBindings","createValueGroups","arrow","movableRows","moveRow","initializeGroupHeader","allowedValues","_createGroup","groupToggleElement","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","updateGroupRows","scrollHeader","groupValues","removeGroup","noCalc","_visSet","getHeadersAndRows","hasTopCalcs","detachElement","generateTopRow","hasBottomCalcs","generateBottomRow","groupClosedShowCalcs","count","getDisplayIndex","checkClassicModeGroupHeaderWidth","prev","compoment","getPath","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","configureGroupSetup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","groupStartOpen","langValue","removeCalcs","getRealColumns","lookupFunc","prevValue","assignRowToGroup","getGroupedData","toGroup","fromGroup","removeRow","insertRow","generateGroups","groupComponents","groupListData","pullGroupListData","rowCount","headerContent","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","every","groupPath","groupId","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","posFrom","posTo","getGroup","newValue","undoers","redoers","oldRow","cellEdit","rowAdd","_rebindRow","rowMove","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","optionsArr","attrib","_attribValue","exists","_findCol","textContent","inQuote","nextChar","Import","importFromFile","importFormat","loadDataCheck","loadData","importData","lookupImporter","structureData","importer","importers","extension","pickFile","extensions","accept","file","files","reader","FileReader","importReader","readAsArrayBuffer","readAsBinaryString","readAsDataURL","readAsText","onload","onerror","parsedData","structureArrayToObject","structureArrayToColumns","getColumns","defaultImporters","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","groupTap","groupDblTap","groupTapHold","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tapDbl","initializeExternalEvents","cellContentsSelectionFixer","selectNode","subscriptionChangeExternal","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","notouch","watchers","componentObj","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","actions","mapBinding","symbolsList","ctrl","meta","code","checkBinding","ctrlKey","shiftKey","metaKey","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","keyBlock","newPos","scrollMax","navLeft","navRight","Menu","menuContainer","menuElements","blurEvent","hideMenu","escEvent","escMenu","nestedMenuBlock","positionReversedX","currentComponent","lookupMenuContainer","initializeRowWatchers","initializeGroupWatchers","checkMenuContainerIsParent","container","rowContextMenu","loadMenuEvent","on","rowClickMenu","groupContextMenu","groupClickMenu","headerContextMenu","loadMenuTableColumnEvent","headerClickMenu","headerMenu","initializeColumnHeaderMenu","contextMenu","loadMenuTableCellEvent","clickMenu","headerMenuEl","menu","loadMenu","touch","MouseEvent","menuEl","itemEl","disabled","hideOldSubMenus","positionMenu","pop","x","y","parentOffset","touches","pageX","pageY","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","movableColumns","mousemove","which","startMove","bindTouchEvents","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","moveToCol","_bindMouseMove","movingCells","_unbindMouseMove","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","connectionTables","commsConnections","dropEvent","elementRowDrop","tabulatorElementDropEvent","sender","movableRowsSender","senders","movableRowsReceiver","receivers","connect","disconnect","dropComplete","fromTable","toTable","Mutator","enabled","transformCell","lookupMutator","mutators","mutatorEdit","pageSize","currentRow","currentPage","totalRows","totalPages","showingEl","valueEl","ofEl","totalEl","rowsEl","pages","Page","progressiveLoad","pageCounterElement","pageCounter","page","remoteRowCountEstimate","initialLoad","dataChanging","pageSizes","setMaxPage","setPage","userSetPageToRow","userSetPageSize","getPageSize","previousPage","nextPage","getPage","getPageMax","setPageToRow","initialLoadComplete","calculatePageSizes","paginationAddRow","rowAddingPosition","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePageCounter","initializePaginator","initializeProgressive","scrollVertical","dispRows","testElRow","testElCell","paginationSize","generatePageSizeSelectList","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","counter","paginationCounter","pageCounters","hidden","pageSelectLabel","paginationCounterHolder","paginationElement","paginationCounterElement","paginationInitialPage","paginationButtonCount","trigger","leftSize","rightSize","_generatePageButton","actualStartRow","actualRowPageSize","actualRows","setMaxRows","_setPageButtons","_setPageCounter","last_page","last_row","progressiveLoadDelay","footer","defaultPageCounters","local","id","localStorage","getItem","cookie","cookiePos","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","testKey","removeItem","persistence","retreivedData","persistenceMode","persistenceID","localStorageTest","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retreiveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","oldCols","newCols","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","excludedKeys","defStore","colDef","defaultReaders","defaultWriters","Print","manualBlock","printAsHtml","replaceTable","cleanup","printFullscreen","genereateTable","printConfig","printStyled","printRowRange","footerContent","scrollX","scrollY","footerEl","tableEl","printHeader","printFooter","printFormatter","scrollTo","ReactiveData","origFuncs","currentVersion","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","getRowFromDataObject","startRow","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","ResizeColumns","startColumn","startWidth","prevHandle","layoutCellHandles","layoutColumnHeader","resizable","handleDown","nearestColumn","_checkResizability","_mouseDown","oldWidth","prevHandleDown","colIndex","mouseMove","checkCellHeights","mouseUp","ResizeRows","startHeight","screenY","ResizeTable","observer","containerObserver","tableHeight","containerWidth","autoResize","tableStyle","ResizeObserver","entry","nodeHeight","contentRect","nodeWidth","observe","tableResized","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","order","generateCollapsedContent","generateCollapsedRowContent","colCount","working","getFlexBaseWidth","hideColumn","showColumn","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","node_content","titleData","valueData","titleHighlight","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectable","clearSelectionData","rowRetrieve","selectablePersistence","_deselectRow","_rowSelectionChanged","endSelect","selected","selectableCheck","getCurrentCell","_clearSelection","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","_selectRow","rowMatch","rowInfo","selectableRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","aRow","bRow","alignEmptyValues","emptyAlign","decimalSeparator","thousandSeparator","string","langLocale","localeCompare","time","array","calc","d","alphanum","as","bs","a1","b1","L","rx","rd","isFinite","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortElement","columnHeaderSortMulti","newSortList","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","findSorter","setColumnHeader","_sortItems","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","el1","el2","defaultSorters","parameters","numeric","starts","ends","minLength","maxLength","regex","unique","cellData","Validate","invalidCells","getInvalidCells","userClearCellValidation","userValidate","cellIsValid","clearValidation","columnValidate","rowValidate","validator","_extractValidator","substring","_buildValidator","validators","invalidIndex","defaultValidators","TabulatorFull"],"mappings":"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"} \ No newline at end of file +{"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/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/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/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/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{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key){\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","import Column from './Column.js';\r\n\r\n//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this._column.getTitleDownload();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"maxInitialWidth\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate, force){\r\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tif(this.column.definition.cellEdited){\r\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate, force){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value !== value || force){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\r\n\t\tthis.dispatch(\"cell-height\", this, \"\");\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\r\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleDownload = null;\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.maxInitialWidth = null;\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif (def.maxInitialWidth) {\r\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\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);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\r\n\t\t\tcolumn.columnRendered();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\r\n\t\tthis.dispatch(\"column-height\", this, \"\");\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this.titleDownload;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-rendered\", this);\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\t// maxInitialWidth ignored here as width specified\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData(force);\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(force){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tvar setTo = maxWidth + 1;\r\n\t\t\t\tif (this.maxInitialWidth && !force) {\r\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\r\n\t\t\t\t}\r\n\t\t\t\tthis.setWidthActual(setTo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn clone;\r\n\t}\r\n}","export default class OptionsList {\r\n\tconstructor(table, msgType, defaults = {}){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = Object.assign({}, defaults)\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determine weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\t\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t\t\r\n\t\tthis.fitDataColAvg = 0;\r\n\t\t\r\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\r\n\t\t\r\n\t\tthis.visibleRows = null;\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.isFitData = false;\r\n\t\t\r\n\t\tthis.columns = [];\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.compatibilityCheck();\r\n\t\tthis.layoutCheck();\r\n\t\tthis.vertScrollListen();\r\n\t}\r\n\t\r\n\tcompatibilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\t\t\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\t\t\r\n\t\treturn ok;\r\n\t}\r\n\t\r\n\tlayoutCheck(){\r\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\r\n\t}\r\n\r\n\tvertScrollListen(){\r\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\r\n\t}\r\n\r\n\tclearVisRowCache(){\r\n\t\tthis.visibleRows = null;\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\t\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\t\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\t\t\t\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\r\n\t\t}\r\n\t}\r\n\t\r\n\tcalcWindowBuffer(){\r\n\t\tvar buffer = this.elementVertical.clientWidth;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tif(width > buffer){\r\n\t\t\t\t\tbuffer = width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.windowBuffer = buffer * 2;\r\n\t}\r\n\t\r\n\trerenderColumns(update, blockRedraw){\t\t\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t},\r\n\t\tcolPos = 0;\r\n\t\t\r\n\t\t\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.clear();\r\n\t\t\r\n\t\tthis.calcWindowBuffer();\r\n\t\t\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\t\t\t\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\t\t\t\t\r\n\t\t\t\tconfig.width = width;\r\n\t\t\t\t\r\n\t\t\t\tif (this.isFitData) {\r\n\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t\t\t\t\t//column is visible\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol == -1){\r\n\t\t\t\t\t\tthis.leftCol = this.columns.length;\r\n\t\t\t\t\t\tthis.vDomPadLeft = colPos;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol = this.columns.length;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// column is hidden\r\n\t\t\t\t\tif(this.leftCol !== -1){\r\n\t\t\t\t\t\tthis.vDomPadRight += width;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.vdomHoz = config;\r\n\t\t\t\t\r\n\t\t\t\tcolPos += width;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.reinitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\t\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\t\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\t\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\t\t\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\t\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\t\t\r\n\t\tif(this.isFitData){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.generateCells();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// if(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t// \tbreak;\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// for(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t// \tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\t\t\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn !match;\r\n\t}\r\n\t\r\n\treinitializeRows(){\r\n\t\tvar rows = this.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetVisibleRows(){\r\n\t\tif (!this.visibleRows){\r\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t}\r\n\r\n\t\treturn this.visibleRows;\t\r\n\t}\r\n\t\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\t\r\n\t\t\tlet column = this.columns[this.rightCol + 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t\t\t}\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol - 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\r\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(diff){\r\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\r\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.rightCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\t\t\tthis.rightCol --;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\t\t\tthis.leftCol ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\t\t\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\t\t\t\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn widthDiff;\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\t\t\t\t\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\t\t\t\t\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nimport defaultColumnOptions from './column/defaults/options.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\t\t\tvar topColumn = nextToColumn.getTopColumn()\r\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\r\n\t\t\tvar nextEl = topColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcolumn.columnRendered();\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\tverticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibleColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\t\t\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //hold elements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.created = false;\r\n\t\t\r\n\t\tthis.setData(data);\r\n\t}\r\n\t\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\t\t\r\n\t\tthis.element = el;\r\n\t}\r\n\t\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\t\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\t\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\t\t\r\n\t\tif(!this.initialized || force){\r\n\t\t\t\r\n\t\t\tthis.deleteCells();\r\n\t\t\t\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\t\t\t\r\n\t\t\tthis.generateCells();\r\n\t\t\t\r\n\t\t\tthis.initialized = true;\r\n\t\t\t\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\t\t\t\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\t\t\t\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t\t\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t}\r\n\t\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\t\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\t\t\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\t\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight;\r\n\t\t\r\n\t\tif(this.table.options.rowHeight){\r\n\t\t\tthis.height = this.table.options.rowHeight;\r\n\t\t}else{\r\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\t\t\t\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tvar height = cell.getHeight();\r\n\t\t\t\tif(height > maxHeight){\r\n\t\t\t\t\tmaxHeight = height;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(force){\r\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t\t}else{\r\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\t\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\t\t\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\t\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\t\tif(force && !this.table.options.rowHeight){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\t\t\r\n\t\tthis.calcHeight(force);\r\n\t\t\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\t\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\t\t\t\r\n\t\t\tthis.manualHeight = true;\r\n\t\t\t\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\t\t\t\r\n\t\t\tthis.setCellHeight();\r\n\t\t\t\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\t\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\t\t\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\t\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\t\t\t\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\t\t\t\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\t\t\t\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\t\t\t\t\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\t\t\t\t\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\t\t\t\r\n\t\t\t//this.reinitialize();\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\t\t\t\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.data;\r\n\t}\r\n\t\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\t\t\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\t\t\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\t\t\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\t\t\r\n\t\treturn this.cells;\r\n\t}\r\n\t\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\t\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\t\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\t\t\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\t\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\t\t\r\n\t\tthis.deleteActual();\r\n\t\t\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\t\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\t\t\r\n\t\tthis.detatchModules();\r\n\t\t\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\t\t\r\n\t\tthis.deleteCells();\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\t\t\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\t\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\t\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\t\t\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\t\t\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\t\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.clearRows();\r\n\t\tthis.renderRows();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\t// element.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\r\n\t\t});\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\t\tthis.placeholder = null; //placeholder element\r\n\t\tthis.placeholderContents = null; //placeholder element\r\n\t\t\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\t\t\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\t\t\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\t\t\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\t\t\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\t\t\r\n\t\tthis.renderer = null;\r\n\t}\r\n\t\r\n\t//////////////// Setup Functions /////////////////\r\n\t\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitializePlaceholder(){\r\n\t\t//configure placeholder element\r\n\t\tif(typeof this.table.options.placeholder == \"string\"){\r\n\t\t\tlet el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\t\t\t\r\n\t\t\tlet contents = document.createElement(\"div\");\r\n\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\r\n\t\t\tcontents.innerHTML = this.table.options.placeholder;\r\n\t\t\t\r\n\t\t\tel.appendChild(contents);\r\n\t\t\t\r\n\t\t\tthis.placeholderContents = contents;\r\n\t\t\tthis.placeholder = el;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\t\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializePlaceholder()\r\n\t\tthis.initializeRenderer();\r\n\t\t\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\t\t\r\n\t\tthis.firstRender = true;\r\n\t\t\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\t\t\t\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\r\n\t\t\t\tthis._positionPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//handle vertical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\t\t\t\t\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\t\t\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\t\t\r\n\t\treturn match || false;\r\n\t}\r\n\t\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\t\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\t\t\t\t\r\n\t\t\t\tthis._setDataActual(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\t\t\r\n\t\tthis._wipeElements();\r\n\t\t\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\t\t\t\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\t\t\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\t\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\t\t\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\t\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\t\t\t\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlength = data.length - 1;\r\n\t\t\t\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, true);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn pos;\r\n\t}\r\n\t\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\t\t\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\t\t\t\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\t\t\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\t\t\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\t\t\t\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\t\t\t\t\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(top){\r\n\t\t\t\t\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\t\t\r\n\t\tthis.moveRowActual(from, to, after);\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\t\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\t\t\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\t\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\t\t\r\n\t\tif(from !== to){\r\n\t\t\t\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\t\t\t\r\n\t\t\tif (fromIndex > -1) {\r\n\t\t\t\t\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\t\t\t\t\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\t\t\t\t\r\n\t\t\t\tif (toIndex > -1) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\t\t\t\t\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\t\t\t\t\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\t\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\t\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\t\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\t\t\r\n\t\t\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\t\t\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn nextRow;\r\n\t}\r\n\t\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\t\t\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn prevRow;\r\n\t}\r\n\t\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\t\t\r\n\t\trow = this.findRow(row);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\t\t\r\n\t\treturn rows.length;\r\n\t}\r\n\t\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\t\t\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\t\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\t\t\r\n\t\t\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\t\t\t\t\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.renderTable();\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-refreshed\");\r\n\t\t}\r\n\t}\r\n\t\r\n\trefreshPipelines(handler, stage, index, renderInPosition){\r\n\t\tthis.dispatch(\"data-refreshing\");\r\n\t\t\r\n\t\tif(!handler){\r\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t}\r\n\t\t\r\n\t\t//cascade through data refresh stages\r\n\t\tswitch(stage){\r\n\t\t\tcase \"all\":\r\n\t\t\t//handle case where alldata needs refreshing\r\n\t\t\t\r\n\t\t\tcase \"dataPipeline\":\r\n\t\t\t\r\n\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\tindex = 0;\r\n\t\t\tthis.resetDisplayRows();\r\n\t\t\t\r\n\t\t\tcase \"displayPipeline\":\r\n\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\t\t\t\t\r\n\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcase \"end\":\r\n\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t}\r\n\t}\r\n\t\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\t\t\t\t\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\t\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\t\t\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\t\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\t\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\t\t\r\n\t\tvar output = true;\r\n\t\t\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\t\t\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetVisibleRows(chain, viewable){\r\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\r\n\t\t\r\n\t\tif(chain){\r\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\t\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(false, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\t\t\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\t\t\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\t\t\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t\t\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\t\r\n\trenderTable(){\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\t\t\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tthis._clearTable();\r\n\t\t\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis.renderer.renderRows();\r\n\t\t\t\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"table-layout\");\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\t\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\t\t\r\n\t\tthis._clearPlaceholder();\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\t\r\n\t_showPlaceholder(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\t\t\t\r\n\t\t\tthis.getElement().appendChild(this.placeholder);\r\n\t\t\tthis._positionPlaceholder();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_positionPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\r\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\t\t\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\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));\r\n\t\t\t\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.renderer.resize();\r\n\t\t\t\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._positionPlaceholder();\r\n\t}\r\n\t\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\t\t\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\t\t\t\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRenderInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.redrawBlockRenderInPosition = false;\r\n\t}\r\n\t\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t\t\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\t\t\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\t\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.containerElement = this.createContainerElement(); //containing element\r\n\t\tthis.external = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t\r\n\tcreateContainerElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer-contents\");\r\n\r\n\t\tthis.element.appendChild(el);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element){\r\n\t\tthis.activate();\r\n\r\n\t\tthis.containerElement.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element){\r\n\t\tthis.activate();\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.dispatch(\"footer-redraw\")\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\nimport Row from '../row/Row.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\t\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.el = null;\r\n\t\t\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\t\t\r\n\t\tthis.previousTargets = {};\r\n\t\t\r\n\t\tthis.listeners = [\r\n\t\t\t\"click\",\r\n\t\t\t\"dblclick\",\r\n\t\t\t\"contextmenu\",\r\n\t\t\t\"mouseenter\",\r\n\t\t\t\"mouseleave\",\r\n\t\t\t\"mouseover\",\r\n\t\t\t\"mouseout\",\r\n\t\t\t\"mousemove\",\r\n\t\t\t\"touchstart\",\r\n\t\t\t\"touchend\",\r\n\t\t];\r\n\t\t\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\t\t\r\n\t\tthis.pseudoTrackers = {\r\n\t\t\t\"row\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"cell\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"group\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"column\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t}\r\n\t\t\r\n\t\tthis.pseudoTracking = false;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.el = this.table.element;\r\n\t\t\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\t\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\t\t\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\t\t\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\t\r\n\tbindPseudoEvents(){\r\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\r\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\r\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\r\n\t\t});\r\n\t\t\r\n\t\tthis.pseudoTracking = true;\r\n\t}\r\n\t\r\n\tpseudoMouseEnter(key, e, target){\r\n\t\tif(this.pseudoTrackers[key].target !== target){\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.pseudoMouseLeave(key, e);\r\n\t\t\t\r\n\t\t\tthis.pseudoTrackers[key].target = target;\r\n\t\t\t\r\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpseudoMouseLeave(key, e){\r\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\r\n\t\tlinkedKeys = {\r\n\t\t\t\"row\":[\"cell\"],\r\n\t\t\t\"cell\":[\"row\"],\r\n\t\t};\r\n\t\t\r\n\t\tleaveList = leaveList.filter((item) => {\r\n\t\t\tvar links = linkedKeys[key];\r\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\tleaveList.forEach((key) => {\r\n\t\t\tvar target = this.pseudoTrackers[key].target;\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t\t\r\n\t\t\t\tthis.pseudoTrackers[key].target = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\t\t\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\t\t\t\t\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this))\r\n\t}\r\n\t\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\t\t\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\r\n\t\t\tthis.bindPseudoEvents();\r\n\t\t}\r\n\t\t\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\t\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\t\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t\t\r\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\r\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\t\t\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\t\t\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\t\t\t\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\t\t\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\t\t\t\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\r\n\t\t\t\t\t\t\ttargets[key] = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tif(targets[\"row\"] instanceof Row){\r\n\t\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t\t}else{\t\r\n\t\t\t\t\t\t\tif(targets[\"row\"]){\r\n\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?\")\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.previousTargets = targetMatches;\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\t\t\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearWatchers(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.handler){\r\n\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\tlistener.handler = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFunctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\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?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.alertLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\r\n\t\t\t\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.clearAlert();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\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\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.alertError();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.clearAlert();\r\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\talertLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\r\n\t\t}\r\n\t}\r\n\r\n\talertError(){\r\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\tthis.table.alertManager.clear();\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(table, optionsList, debug){\r\n\t\tthis.table = table;\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this.table, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class Popup extends CoreFeature{\r\n constructor(table, element, parent){\r\n super(table);\r\n \r\n this.element = element;\r\n this.container = this._lookupContainer();\r\n \r\n this.parent = parent;\r\n \r\n this.reversedX = false;\r\n this.childPopup = null;\r\n this.blurable = false;\r\n this.blurCallback = null;\r\n this.renderedCallback = null;\r\n \r\n this.visible = false;\r\n \r\n this.element.classList.add(\"tabulator-popup-container\");\r\n \r\n this.blurEvent = this.hide.bind(this, false);\r\n this.escEvent = this._escapeCheck.bind(this);\r\n }\r\n \r\n _lookupContainer(){\r\n var container = this.table.options.popupContainer;\r\n \r\n if(typeof container === \"string\"){\r\n container = document.querySelector(container);\r\n \r\n if(!container){\r\n console.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\r\n }\r\n }else if (container === true){\r\n container = this.table.element;\r\n }\r\n \r\n if(container && !this._checkContainerIsParent(container)){\r\n container = false;\r\n console.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\r\n }\r\n \r\n if(!container){\r\n container = document.body;\r\n }\r\n \r\n return container;\r\n }\r\n \r\n _checkContainerIsParent(container, element = this.table.element){\r\n if(container === element){\r\n return true;\r\n }else{\r\n return element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\r\n }\r\n }\r\n \r\n renderCallback(callback){\r\n this.renderedCallback = callback;\r\n }\r\n \r\n containerEventCoords(e){\r\n var touch = !(e instanceof MouseEvent);\r\n \r\n var x = touch ? e.touches[0].pageX : e.pageX;\r\n var y = touch ? e.touches[0].pageY : e.pageY;\r\n \r\n if(this.container !== document.body){\r\n let parentOffset = Helpers.elOffset(this.container);\r\n \r\n x -= parentOffset.left;\r\n y -= parentOffset.top;\r\n }\r\n \r\n return {x, y};\r\n }\r\n \r\n elementPositionCoords(element, position = \"right\"){\r\n var offset = Helpers.elOffset(element),\r\n containerOffset, x, y;\r\n \r\n if(this.container !== document.body){\r\n containerOffset = Helpers.elOffset(this.container);\r\n \r\n offset.left -= containerOffset.left;\r\n offset.top -= containerOffset.top;\r\n }\r\n \r\n switch(position){\r\n case \"right\":\r\n x = offset.left + element.offsetWidth;\r\n y = offset.top - 1;\r\n break;\r\n \r\n case \"bottom\":\r\n x = offset.left;\r\n y = offset.top + element.offsetHeight;\r\n break;\r\n }\r\n \r\n return {x, y, offset};\r\n }\r\n \r\n show(origin, position){\r\n var x, y, parentEl, parentOffset, containerOffset, coords;\r\n \r\n if(origin instanceof HTMLElement){\r\n parentEl = origin;\r\n coords = this.elementPositionCoords(origin, position);\r\n \r\n parentOffset = coords.offset;\r\n x = coords.x;\r\n y = coords.y;\r\n \r\n }else if(typeof origin === \"number\"){\r\n parentOffset = {top:0, left:0};\r\n x = origin;\r\n y = position;\r\n }else{\r\n coords = this.containerEventCoords(origin);\r\n \r\n x = coords.x;\r\n y = coords.y;\r\n \r\n this.reversedX = false;\r\n }\r\n \r\n this.element.style.top = y + \"px\";\r\n this.element.style.left = x + \"px\";\r\n \r\n this.container.appendChild(this.element);\r\n \r\n if(typeof this.renderedCallback === \"function\"){\r\n this.renderedCallback();\r\n }\r\n \r\n this._fitToScreen(x, y, parentEl, parentOffset, position);\r\n \r\n this.visible = true;\r\n \r\n return this;\r\n }\r\n \r\n _fitToScreen(x, y, parentEl, parentOffset, position){\r\n var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\r\n\r\n //move menu to start on right edge if it is too close to the edge of the screen\r\n if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\r\n this.element.style.left = \"\";\r\n \r\n if(parentEl){\r\n this.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\r\n }else{\r\n this.element.style.right = (this.container.offsetWidth - x) + \"px\";\r\n }\r\n \r\n this.reversedX = true;\r\n }\r\n\r\n //move menu to start on bottom edge if it is too close to the edge of the screen\r\n if((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\r\n if(parentEl){\r\n switch(position){\r\n case \"bottom\":\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\r\n break;\r\n\r\n default:\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\r\n }\r\n \r\n }else{\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\r\n }\r\n }\r\n }\r\n \r\n isVisible(){\r\n return this.visible;\r\n }\r\n \r\n hideOnBlur(callback){\r\n this.blurable = true;\r\n \r\n if(this.visible){\r\n setTimeout(() => {\r\n this.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n this.subscribe(\"cell-editing\", this.blurEvent);\r\n document.body.addEventListener(\"click\", this.blurEvent);\r\n document.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n window.addEventListener(\"resize\", this.blurEvent);\r\n document.body.addEventListener(\"keydown\", this.escEvent);\r\n }, 100);\r\n \r\n this.blurCallback = callback;\r\n }\r\n \r\n return this;\r\n }\r\n \r\n _escapeCheck(e){\r\n if(e.keyCode == 27){\r\n this.hide();\r\n }\r\n }\r\n \r\n hide(silent = false){\r\n if(this.visible){\r\n if(this.blurable){\r\n document.body.removeEventListener(\"keydown\", this.escEvent);\r\n document.body.removeEventListener(\"click\", this.blurEvent);\r\n document.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n window.removeEventListener(\"resize\", this.blurEvent);\r\n this.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n this.unsubscribe(\"cell-editing\", this.blurEvent);\r\n }\r\n \r\n if(this.childPopup){\r\n this.childPopup.hide();\r\n }\r\n \r\n if(this.parent){\r\n this.parent.childPopup = null;\r\n }\r\n \r\n if(this.element.parentNode){\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n\r\n this.visible = false;\r\n\r\n if(this.blurCallback && !silent){\r\n this.blurCallback();\r\n }\r\n }\r\n \r\n return this;\r\n }\r\n \r\n child(element){\r\n if(this.childPopup){\r\n this.childPopup.hide();\r\n }\r\n \r\n this.childPopup = new Popup(this.table, element, this);\r\n \r\n return this.childPopup;\r\n }\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Popup from './tools/Popup.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registration ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = (...args) => {\r\n\t\t\t\tthis.table.initGuard(name);\r\n\r\n\t\t\t\treturn func(...args);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Footer Management ////////\r\n\t///////////////////////////////////\r\n\r\n\tfooterAppend(element){\r\n\t\treturn this.table.footerManager.append(element)\r\n\t}\r\n\r\n\tfooterPrepend(element){\r\n\t\treturn this.table.footerManager.prepend(element)\r\n\t}\r\n\r\n\tfooterRemove(element){\r\n\t\treturn this.table.footerManager.remove(element)\r\n\t} \r\n\r\n\t///////////////////////////////////\r\n\t//////// Popups Management ////////\r\n\t///////////////////////////////////\r\n\t\r\n\tpopup(menuEl, menuContainer){\r\n\t\treturn new Popup(this.table, menuEl, menuContainer);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Alert Management ////////\r\n\t///////////////////////////////////\r\n\r\n\talert(content, type){\r\n\t\treturn this.table.alertManager.alert(content, type);\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\treturn this.table.alertManager.clear();\r\n\t}\r\n\t\r\n}\r\n\r\nexport default Module;","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tthis.dispatch(\"layout-refreshing\")\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t\t\"counter\":{\r\n\t\t\t\t\"showing\": \"Showing\",\r\n\t\t\t\t\"of\": \"of\",\r\n\t\t\t\t\"rows\": \"rows\",\r\n\t\t\t\t\"pages\": \"pages\",\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\t\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\t\t\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\t\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\t\t\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\r\n\t\t\t\t\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\t\t\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\t\t\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tvar orderedStartMods = [],\r\n\t\t\torderedEndMods = [],\r\n\t\t\tunOrderedMods = [];\r\n\t\t\t\r\n\t\t\tthis.modules = {};\r\n\t\t\t\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\t\t\t\tlet module = new mod(this);\r\n\t\t\t\t\r\n\t\t\t\tthis.modules[name] = module;\r\n\t\t\t\t\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore.push(module);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(mod.moduleInitOrder){\r\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\r\n\t\t\t\t\t\t\torderedStartMods.push(module);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\torderedEndMods.push(module);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tunOrderedMods.push(module);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\t\t\t\r\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\r\n\t\t}\r\n\t}\r\n\t\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\t\t\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class Alert extends CoreFeature{\r\n constructor(table){\r\n super(table);\r\n \r\n this.element = this._createAlertElement();\r\n this.msgElement = this._createMsgElement();\r\n this.type = null;\r\n \r\n this.element.appendChild(this.msgElement);\r\n }\r\n \r\n _createAlertElement(){\r\n var el = document.createElement(\"div\");\r\n el.classList.add(\"tabulator-alert\");\r\n return el;\r\n }\r\n \r\n _createMsgElement(){\r\n var el = document.createElement(\"div\");\r\n el.classList.add(\"tabulator-alert-msg\");\r\n el.setAttribute(\"role\", \"alert\");\r\n return el;\r\n }\r\n \r\n _typeClass(){\r\n return \"tabulator-alert-state-\" + this.type;\r\n }\r\n \r\n alert(content, type = \"msg\"){\r\n if(content){\r\n this.clear();\r\n \r\n this.type = type;\r\n \r\n while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n \r\n this.msgElement.classList.add(this._typeClass());\r\n \r\n if(typeof content === \"function\"){\r\n content = content();\r\n }\r\n \r\n if(content instanceof HTMLElement){\r\n this.msgElement.appendChild(content);\r\n }else{\r\n this.msgElement.innerHTML = content;\r\n }\r\n \r\n this.table.element.appendChild(this.element);\r\n }\r\n }\r\n \r\n clear(){\r\n if(this.element.parentNode){\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n \r\n this.msgElement.classList.remove(this._typeClass());\r\n }\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport Alert from './tools/Alert.js';\r\n\r\nclass Tabulator {\r\n\t\r\n\tconstructor(element, options){\r\n\t\t\r\n\t\tthis.options = {};\r\n\t\t\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.alertManager = null; //hold Alert Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\r\n\t\t\r\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\t\t\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\r\n\t\t\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\t\r\n\t\tif(this.initializeElement(element)){\r\n\t\t\t\r\n\t\t\tthis.initializeCoreSystems(options);\r\n\t\t\t\r\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\t\t\r\n\t\tTableRegistry.register(this); //register table for inter-device communication\r\n\t}\r\n\t\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\t\t\t\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\t\tthis.alertManager = new Alert(this);\r\n\t\t\r\n\t\tthis.bindModules();\r\n\t\t\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\t\t\r\n\t\tthis._clearObjectPointers();\r\n\t\t\r\n\t\tthis._mapDeprecatedFunctionality();\r\n\t\t\r\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\t\t\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\t\t\r\n\t\tthis.dataLoader.initialize();\r\n\t\t// this.columnManager.initialize();\r\n\t\t// this.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\t\r\n\t//convert deprecated functionality to new functions\r\n\t_mapDeprecatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\t\r\n\t_clearSelection(){\r\n\t\t\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\tif (window.getSelection) {\r\n\t\t\tif (window.getSelection().empty) { // Chrome\r\n\t\t\t\twindow.getSelection().empty();\r\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t}\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\t\r\n\t//create table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\t\t\r\n\t\tthis._rtlCheck();\r\n\t\t\r\n\t\tthis._buildElement();\r\n\t\t\r\n\t\tthis._initializeTable();\r\n\t\t\r\n\t\tthis._loadInitialData();\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\t\r\n\t_rtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\t\t\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\t\t\r\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options,\r\n\t\tnewElement;\r\n\t\t\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\t\t\t\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\t\t\t\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\t\t\t\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\r\n\t\t\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\t\t\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\t\t\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\t\t\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\t\t\r\n\t\tthis.interactionMonitor.initialize();\r\n\t\t\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\t\t\r\n\t\tthis._detectBrowser();\r\n\t\t\r\n\t\t//initialize core modules\r\n\t\tthis.modulesCore.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t})\r\n\t\t\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\t\t\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\t\t\r\n\t\tif(options.autoColumns && options.data){\r\n\t\t\t\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\t\t\r\n\t\t//initialize regular modules\r\n\t\tthis.modulesRegular.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t});\r\n\t\t\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\t\t\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t}\r\n\t\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\t\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\t\t\r\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\r\n\t\t\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\t\t\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\t\t\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\t\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\t\t\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\t\t\r\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));\r\n\t}\r\n\t\r\n\tinitGuard(func, msg){\r\n\t\tvar stack, line;\r\n\t\t\r\n\t\tif(this.options.debugInitialization && !this.initialized){\r\n\t\t\tif(!func){\r\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\r\n\t\t\t\t\r\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\r\n\t\t\t\t\r\n\t\t\t\tif(line[0] == \" \"){\r\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\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 : \"\"));\r\n\t\t}\r\n\t\t\r\n\t\treturn this.initialized;\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\t\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\r\n\t\t\r\n\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t}\r\n\t\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\t\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\t\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\t\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t}\r\n\t\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\tresponses++;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\taddData(data, pos, index){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t.then((rows) => {\r\n\t\t\t\t\tvar output = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tresolve(output);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\t\t\t\t\t\r\n\t\t\t\t\tresponses++;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\t\t\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\t\t\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\t\t\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\t\t\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\t\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t.then((rows)=>{\r\n\t\t\treturn rows[0].getComponent();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\t\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn Promise.resolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\t\r\n\t}\r\n\t\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\r\n\t\t\r\n\t\tthis.columnManager.setColumns(definition);\r\n\t}\r\n\t\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\t\r\n\tgetColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\t\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field); \r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\t\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from),\r\n\t\ttoColumn = this.columnManager.findColumn(to);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.columnManager.redraw(force);\r\n\t\tthis.rowManager.redraw(force);\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\t\r\n\t//////////////////// Event Bus ///////////////////\r\n\t\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\t\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\t\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\t\t\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t//////////////////// Alerts ///////////////////\r\n\r\n\talert(contents, type){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.alertManager.alert(contents, type);\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.alertManager.clear();\r\n\t}\r\n\t\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\t\t\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\t\t\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;\r\n","export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\tdebugInitialization:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tpopupContainer:false,\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //separator for nested data\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\trowHeight:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\tdataLoaderErrorTimeout:3000,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {}","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nexport default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\r\n\t\t\tvar output = generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.config = {}; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\t\t\r\n\t\tthis.loaderPromise = false;\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\t\t\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\t\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\t\t\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\r\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\t\r\n\trequestParams(data, config, silent, params){\r\n\t\tvar ajaxParams = this.table.options.ajaxParams;\r\n\t\t\r\n\t\tif(ajaxParams){\r\n\t\t\tif(typeof ajaxParams === \"function\"){\r\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tparams = Object.assign(params, ajaxParams);\r\n\t\t}\t\t\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\t\r\n\trequestData(url, params, config, silent, previousData){\r\n\t\tvar ajaxConfig;\r\n\t\t\r\n\t\tif(!previousData && this.requestDataCheck(url)){\r\n\t\t\tif(url){\r\n\t\t\t\tthis.setUrl(url);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tajaxConfig = this.generateConfig(config);\r\n\t\t\t\r\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetDefaultConfig(config = {}){\r\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(this.config, config);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//load config object\r\n\tgenerateConfig(config = {}){\r\n\t\tvar ajaxConfig = Object.assign({}, this.config)\r\n\t\t\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tajaxConfig.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(ajaxConfig, config);\r\n\t\t}\r\n\t\t\r\n\t\treturn ajaxConfig;\r\n\t}\r\n\t\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\t\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\t\r\n\t//send ajax request\r\n\tsendRequest(url, params, config){\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\r\n\t\t\treturn this.loaderPromise(url, config, params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\tmethod: \"GET\",\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tif(this.topRow){\r\n\t\t\trows.unshift(this.topRow);\r\n\t\t}\r\n\r\n\t\tif(this.botRow){\r\n\t\t\trows.push(this.botRow);\r\n\t\t}\r\n\t\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRowsRefresh(){\r\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\r\n\t\t\tthis.recalcAll();\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.footerRemove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.footerPrepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(row);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeElementField(){\r\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\r\n\r\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\t}\r\n\t\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tvar field = cell.column.getField();\r\n\r\n\t\tif(field === this.elementField){\r\n\t\t\tthis.layoutRow(cell.row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowExpanded(row){\r\n\t\treturn row.modules.dataTree.open;\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\nimport jsonLines from './downloaders/jsonLines.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tjsonLines:jsonLines,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function (list, options, setFileContents) {\r\n\tconst fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tconst item = {};\r\n\r\n\t\tswitch (row.type) {\r\n\t\t\tcase \"header\":\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\t\tif (col) {\r\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tfileContents.push(JSON.stringify(item));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\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 }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\r\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}});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import maskInput from './inputMask.js';\r\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\r\n\r\nexport default class Edit{\r\n constructor(editor, cell, onRendered, success, cancel, editorParams){\r\n this.edit = editor;\r\n this.table = editor.table;\r\n this.cell = cell;\r\n this.params = this._initializeParams(editorParams);\r\n \r\n this.data = [];\r\n this.displayItems = [];\r\n this.currentItems = [];\r\n this.focusedItem = null;\r\n \r\n this.input = this._createInputElement();\r\n this.listEl = this._createListElement();\r\n \r\n this.initialValues = null; \r\n \r\n this.isFilter = !cell._getSelf;\r\n \r\n this.filterTimeout = null;\r\n this.filtered = false;\r\n this.typing = false;\r\n \r\n this.values = []; \r\n this.popup = null; \r\n \r\n this.listIteration = 0;\r\n \r\n this.blurable = true;\r\n \r\n this.actions = {\r\n success:success,\r\n cancel:cancel\r\n }\r\n \r\n this._deprecationCheck();\r\n this._initializeValue();\r\n \r\n onRendered(this._onRendered.bind(this));\r\n }\r\n \r\n _deprecationCheck(){\r\n if(this.params.listItemFormatter){\r\n console.warn(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.sortValuesList){\r\n console.warn(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.searchFunc){\r\n console.warn(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.searchingPlaceholder){\r\n console.warn(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n }\r\n \r\n _initializeValue(){\r\n var initialValue = this.cell.getValue();\r\n \r\n if(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\r\n initialValue = this.params.defaultValue;\r\n }\r\n \r\n this.initialValues = this.params.multiselect ? initialValue : [initialValue];\r\n \r\n if(this.isFilter){\r\n this.input.value = this.initialValues.join(\",\");\r\n this.headerFilterInitialListGen(); \r\n }\r\n }\r\n \r\n _onRendered(){\r\n var cellEl = this.cell.getElement();\r\n \r\n function clickStop(e){\r\n e.stopPropagation();\r\n }\r\n \r\n this.input.style.height = \"100%\";\r\n this.input.focus({preventScroll: true});\r\n \r\n \r\n cellEl.addEventListener(\"click\", clickStop);\r\n \r\n setTimeout(() => {\r\n cellEl.removeEventListener(\"click\", clickStop);\r\n }, 1000)\r\n }\r\n \r\n _createListElement(){\r\n var listEl = document.createElement(\"div\");\r\n listEl.classList.add(\"tabulator-edit-list\");\r\n \r\n listEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\r\n listEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this))\r\n \r\n return listEl;\r\n }\r\n \r\n _setListWidth(){\r\n var element = this.isFilter ? this.input : this.cell.getElement();\r\n \r\n this.listEl.style.minWidth = element.offsetWidth + \"px\";\r\n \r\n if(this.params.maxWidth){\r\n if(this.params.maxWidth === true){\r\n this.listEl.style.maxWidth = element.offsetWidth + \"px\";\r\n }else if(typeof this.params.maxWidth === \"number\"){\r\n this.listEl.style.maxWidth = this.params.maxWidth + \"px\";\r\n }else{\r\n this.listEl.style.maxWidth = this.params.maxWidth;\r\n }\r\n }\r\n \r\n }\r\n \r\n _createInputElement(){\r\n var attribs = this.params.elementAttributes;\r\n var input = document.createElement(\"input\");\r\n \r\n input.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\r\n \r\n input.style.padding = \"4px\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n \r\n if(!this.params.autocomplete){\r\n input.style.cursor = \"default\";\r\n input.style.caretColor = \"transparent\";\r\n // input.readOnly = (this.edit.currentCell != false);\r\n }\r\n \r\n if(attribs && typeof attribs == \"object\"){\r\n for (let key in attribs){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + attribs[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, attribs[key]);\r\n }\r\n }\r\n }\r\n \r\n if(this.params.mask){\r\n maskInput(input, this.params);\r\n }\r\n \r\n this._bindInputEvents(input);\r\n \r\n return input;\r\n }\r\n \r\n _initializeParams(params){\r\n var valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\r\n valueCheck;\r\n\r\n params = Object.assign({}, params);\r\n \r\n params.verticalNavigation = params.verticalNavigation || \"editor\";\r\n params.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\r\n params.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\r\n params.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\r\n \r\n params.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\r\n\r\n valueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\r\n\r\n if(!valueCheck){\r\n console.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\")\r\n }else if(valueCheck > 1){\r\n console.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\")\r\n }\r\n \r\n if(params.autocomplete){\r\n if(params.multiselect){\r\n params.multiselect = false;\r\n console.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\")\r\n }\r\n }else{\r\n if(params.freetext){\r\n params.freetext = false;\r\n console.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.filterFunc){\r\n params.filterFunc = false;\r\n console.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.filterRemote){\r\n params.filterRemote = false;\r\n console.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.mask){\r\n params.mask = false;\r\n console.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.allowEmpty){\r\n params.allowEmpty = false;\r\n console.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.listOnEmpty){\r\n params.listOnEmpty = false;\r\n console.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\r\n }\r\n }\r\n \r\n if(params.filterRemote && !(typeof params.valuesLookup === \"function\" || typeof params.valuesURL)){\r\n params.filterRemote = false;\r\n console.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\r\n }\r\n return params;\r\n }\r\n //////////////////////////////////////\r\n ////////// Event Handling ////////////\r\n //////////////////////////////////////\r\n \r\n _bindInputEvents(input){\r\n input.addEventListener(\"focus\", this._inputFocus.bind(this))\r\n input.addEventListener(\"click\", this._inputClick.bind(this))\r\n input.addEventListener(\"blur\", this._inputBlur.bind(this))\r\n input.addEventListener(\"keydown\", this._inputKeyDown.bind(this))\r\n input.addEventListener(\"search\", this._inputSearch.bind(this))\r\n \r\n if(this.params.autocomplete){\r\n input.addEventListener(\"keyup\", this._inputKeyUp.bind(this))\r\n }\r\n }\r\n \r\n \r\n _inputFocus(e){\r\n this.rebuildOptionsList();\r\n }\r\n \r\n _filter(){\r\n if(this.params.filterRemote){\r\n clearTimeout(this.filterTimeout);\r\n \r\n this.filterTimeout = setTimeout(() => {\r\n this.rebuildOptionsList();\r\n }, this.params.filterDelay);\r\n }else{\r\n this._filterList();\r\n }\r\n }\r\n \r\n _inputClick(e){\r\n e.stopPropagation();\r\n }\r\n \r\n _inputBlur(e){\r\n if(this.blurable && this.popup){\r\n this.popup.hide();\r\n }\r\n }\r\n \r\n _inputSearch(){\r\n this._clearChoices();\r\n }\r\n \r\n _inputKeyDown(e){\r\n switch(e.keyCode){\r\n \r\n case 38: //up arrow\r\n this._keyUp(e);\r\n break\r\n \r\n case 40: //down arrow\r\n this._keyDown(e);\r\n break;\r\n \r\n case 37: //left arrow\r\n case 39: //right arrow\r\n this._keySide(e);\r\n break;\r\n \r\n case 13: //enter\r\n this._keyEnter();\r\n break;\r\n \r\n case 27: //escape\r\n this._keyEsc();\r\n break;\r\n \r\n case 36: //home\r\n case 35: //end\r\n this._keyHomeEnd(e);\r\n break;\r\n \r\n case 9: //tab\r\n break;\r\n \r\n default:\r\n this._keySelectLetter(e);\r\n }\r\n }\r\n \r\n _inputKeyUp(e){\r\n switch(e.keyCode){\r\n case 38: //up arrow\r\n case 37: //left arrow\r\n case 39: //up arrow\r\n case 40: //right arrow\r\n case 13: //enter\r\n case 27: //escape\r\n break;\r\n \r\n default:\r\n this._keyAutoCompLetter(e);\r\n }\r\n }\r\n \r\n _preventBlur(){\r\n this.blurable = false;\r\n \r\n setTimeout(function(){\r\n this.blurable = true;\r\n }, 10);\r\n }\r\n \r\n //////////////////////////////////////\r\n //////// Keyboard Navigation /////////\r\n //////////////////////////////////////\r\n \r\n _keyUp(e){\r\n var index = this.displayItems.indexOf(this.focusedItem);\r\n \r\n if(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n \r\n if(index > 0){\r\n this._focusItem(this.displayItems[index - 1]);\r\n }\r\n }\r\n }\r\n \r\n _keyDown(e){\r\n var index = this.displayItems.indexOf(this.focusedItem);\r\n \r\n if(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n \r\n if(index < this.displayItems.length - 1){\r\n if(index == -1){\r\n this._focusItem(this.displayItems[0]);\r\n }else{\r\n this._focusItem(this.displayItems[index + 1]);\r\n }\r\n }\r\n }\r\n }\r\n \r\n _keySide(e){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n \r\n _keyEnter(e){\r\n if(this.focusedItem){\r\n this._chooseItem(this.focusedItem);\r\n }else{\r\n this._cancel();\r\n }\r\n }\r\n \r\n _keyEsc(e){\r\n this._cancel();\r\n }\r\n \r\n _keyHomeEnd(e){\r\n if(this.params.autocomplete){\r\n //prevent table navigation while using input element\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n \r\n _keySelectLetter(e){\r\n if(!this.params.autocomplete){\r\n // if(this.edit.currentCell === false){\r\n e.preventDefault();\r\n // }\r\n \r\n if(e.keyCode >= 38 && e.keyCode <= 90){\r\n this._scrollToValue(e.keyCode);\r\n }\r\n }\r\n }\r\n \r\n _keyAutoCompLetter(e){\r\n this._filter();\r\n this.typing = true;\r\n }\r\n \r\n \r\n _scrollToValue(char){\r\n clearTimeout(this.filterTimeout);\r\n \r\n var character = String.fromCharCode(char).toLowerCase();\r\n this.filterTerm += character.toLowerCase();\r\n \r\n var match = this.displayItems.find((item) => {\r\n return typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\r\n });\r\n \r\n if(match){\r\n this._focusItem(match);\r\n }\r\n \r\n this.filterTimeout = setTimeout(() => {\r\n this.filterTerm = \"\";\r\n }, 800)\r\n }\r\n \r\n _focusItem(item){\r\n if(this.focusedItem && this.focusedItem.element){\r\n this.focusedItem.element.classList.remove(\"focused\");\r\n }\r\n \r\n this.focusedItem = item;\r\n \r\n if(item && item.element){\r\n item.element.classList.add(\"focused\");\r\n item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n }\r\n }\r\n \r\n \r\n //////////////////////////////////////\r\n /////// Data List Generation /////////\r\n //////////////////////////////////////\r\n headerFilterInitialListGen(){\r\n this._generateOptions(true);\r\n }\r\n \r\n rebuildOptionsList(){\r\n this._generateOptions()\r\n .then(this._sortOptions.bind(this))\r\n .then(this._buildList.bind(this))\r\n .then(this._showList.bind(this))\r\n .catch((e) => {\r\n if(!Number.isInteger(e)){\r\n console.error(\"List generation error\", e);\r\n }\r\n })\r\n }\r\n \r\n _filterList(){\r\n this._buildList(this._filterOptions());\r\n this._showList();\r\n }\r\n \r\n _generateOptions(silent){\r\n var values = [];\r\n var itteration = ++ this.listIteration;\r\n \r\n this.filtered = false;\r\n \r\n if(this.params.values){\r\n values = this.params.values;\r\n }else if (this.params.valuesURL){\r\n values = this._ajaxRequest(this.params.valuesURL, this.input.value);\r\n }else{\r\n if(typeof this.params.valuesLookup === \"function\"){\r\n values = this.params.valuesLookup(cell, this.input.value);\r\n }else if(this.params.valuesLookup){\r\n values = this._uniqueColumnValues(this.params.valuesLookupField);\r\n }\r\n }\r\n \r\n if(values instanceof Promise){\r\n if(!silent){\r\n this._addPlaceholder(this.params.placeholderLoading);\r\n }\r\n \r\n return values.then()\r\n .then((responseValues) => {\r\n if(this.listIteration === itteration){\r\n return this._parseList(responseValues);\r\n }else{\r\n return Promise.reject(itteration);\r\n }\r\n });\r\n }else{\r\n return Promise.resolve(this._parseList(values))\r\n }\r\n }\r\n \r\n _addPlaceholder(contents){\r\n var placeholder = document.createElement(\"div\");\r\n \r\n if(typeof contents === \"function\"){\r\n contents = contents(cell.getComponent(), this.listEl);\r\n }\r\n \r\n if(contents){\r\n this._clearList();\r\n \r\n if(contents instanceof HTMLElement){\r\n placeholder = contents;\r\n }else{\r\n placeholder.classList.add(\"tabulator-edit-list-placeholder\")\r\n placeholder.innerHTML = contents;\r\n }\r\n \r\n this.listEl.appendChild(placeholder);\r\n \r\n this._showList();\r\n }\r\n }\r\n \r\n _ajaxRequest(url, term){\r\n var params = this.params.filterRemote ? {term:term} : {};\r\n url = urlBuilder(url, {}, params);\r\n \r\n return fetch(url)\r\n .then((response)=>{\r\n if(response.ok) {\r\n return response.json()\r\n .catch((error)=>{\r\n console.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\r\n return Promise.reject(error);\r\n });\r\n }else{\r\n console.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n return Promise.reject(response);\r\n }\r\n })\r\n .catch((error)=>{\r\n console.error(\"List Ajax Load Error - Connection Error: \", error);\r\n return Promise.reject(error);\r\n });\r\n }\r\n \r\n _uniqueColumnValues(field){\r\n var output = {},\r\n data = this.table.getData(this.params.valuesLookup),\r\n column;\r\n \r\n if(field){\r\n column = this.table.columnManager.getColumnByField(field);\r\n }else{\r\n column = this.cell.getColumn()._getSelf();\r\n }\r\n \r\n if(column){\r\n data.forEach((row) => {\r\n var val = column.getFieldValue(row);\r\n \r\n if(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n output[val] = true;\r\n }\r\n });\r\n }else{\r\n console.warn(\"unable to find matching column to create select lookup list:\", field);\r\n output = [];\r\n }\r\n \r\n return Object.keys(output);\r\n }\r\n \r\n \r\n _parseList(inputValues){\r\n var data = [];\r\n \r\n if(!Array.isArray(inputValues)){\r\n inputValues = Object.entries(inputValues).map(([key, value]) => {\r\n return {\r\n label:value,\r\n value:key,\r\n };\r\n });\r\n }\r\n \r\n inputValues.forEach((value) => {\r\n if(typeof value !== \"object\"){\r\n value = {\r\n label:value,\r\n value:value,\r\n };\r\n }\r\n \r\n this._parseListItem(value, data, 0);\r\n });\r\n \r\n this.data = data;\r\n \r\n return data; \r\n }\r\n \r\n _parseListItem(option, data, level){\r\n var item = {};\r\n \r\n if(option.options){\r\n item = this._parseListGroup(option, level + 1);\r\n }else{\r\n item = {\r\n label:option.label,\r\n value:option.value,\r\n itemParams:option.itemParams,\r\n elementAttributes: option.elementAttributes,\r\n element:false,\r\n selected:false,\r\n visible:true,\r\n level:level,\r\n original:option,\r\n };\r\n \r\n if(this.initialValues && this.initialValues.indexOf(option.value) > -1){\r\n this._chooseItem(item, true);\r\n }\r\n }\r\n \r\n data.push(item);\r\n }\r\n \r\n _parseListGroup(option, level){\r\n var item = {\r\n label:option.label,\r\n group:true,\r\n itemParams:option.itemParams,\r\n elementAttributes:option.elementAttributes,\r\n element:false,\r\n visible:true,\r\n level:level,\r\n options:[],\r\n original:option,\r\n };\r\n \r\n option.options.forEach((child) => {\r\n this._parseListItem(child, item.options, level);\r\n });\r\n \r\n return item;\r\n }\r\n \r\n _sortOptions(options){\r\n var sorter;\r\n \r\n if(this.params.sort){\r\n sorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\r\n \r\n this._sortGroup(sorter, options);\r\n }\r\n \r\n return options;\r\n }\r\n \r\n _sortGroup(sorter, options){\r\n options.sort((a,b) => {\r\n return sorter(a.label, b.label, a.value, b.value, a.original, b.original);\r\n });\r\n \r\n options.forEach((option) => {\r\n if(option.group){\r\n this._sortGroup(sorter, option.options);\r\n }\r\n })\r\n }\r\n \r\n _defaultSortFunction(as, bs){\r\n var a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n var emptyAlign = 0;\r\n \r\n if(this.params.sort === \"desc\"){\r\n [as, bs] = [bs, as];\r\n }\r\n \r\n //handle empty values\r\n if(!as && as!== 0){\r\n emptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n }else if(!bs && bs!== 0){\r\n emptyAlign = 1;\r\n }else{\r\n if(isFinite(as) && isFinite(bs)) return as - bs;\r\n a = String(as).toLowerCase();\r\n b = String(bs).toLowerCase();\r\n if(a === b) return 0;\r\n if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n a = a.match(rx);\r\n b = b.match(rx);\r\n L = a.length > b.length ? b.length : a.length;\r\n while(i < L){\r\n a1= a[i];\r\n b1= b[i++];\r\n if(a1 !== b1){\r\n if(isFinite(a1) && isFinite(b1)){\r\n if(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n if(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n return a1 - b1;\r\n }\r\n else return a1 > b1 ? 1 : -1;\r\n }\r\n }\r\n \r\n return a.length > b.length;\r\n }\r\n \r\n return emptyAlign;\r\n }\r\n \r\n _filterOptions(){\r\n var filterFunc = this.params.filterFunc || this._defaultFilterFunc;\r\n var term = this.input.value;\r\n var results = [];\r\n \r\n if(term){\r\n this.filtered = true;\r\n \r\n this.data.forEach((item) => {\r\n this._filterItem(filterFunc, term, item);\r\n });\r\n }else{\r\n this.filtered = false;\r\n }\r\n \r\n return this.data;\r\n }\r\n \r\n _filterItem(func, term, item){\r\n var matches = false;\r\n \r\n if(!item.group){\r\n item.visible = func(term, item.label, item.value, item.original);\r\n }else{\r\n item.options.forEach((option) => {\r\n if(this._filterItem(func, term, option)){\r\n matches = true;\r\n }\r\n });\r\n \r\n item.visible = matches;\r\n }\r\n \r\n return item.visible;\r\n }\r\n \r\n _defaultFilterFunc(term, label, value, item){\r\n var term = String(term).toLowerCase();\r\n \r\n if(label !== null || typeof label !== \"undefined\"){\r\n if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase(term).indexOf() > -1){\r\n return true;\r\n }\r\n }\r\n \r\n return false;\r\n }\r\n \r\n //////////////////////////////////////\r\n /////////// Display List /////////////\r\n //////////////////////////////////////\r\n \r\n _clearList(){\r\n while(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\r\n \r\n this.displayItems = [];\r\n }\r\n \r\n _buildList(data){\r\n this._clearList();\r\n \r\n data.forEach((option) => {\r\n this._buildItem(option);\r\n });\r\n \r\n if(!this.displayItems.length){\r\n this._addPlaceholder(this.params.placeholderEmpty);\r\n } \r\n }\r\n \r\n _buildItem(item){\r\n var el = item.element,\r\n contents;\r\n \r\n if(!this.filtered || item.visible){\r\n \r\n if(!el){\r\n el = document.createElement(\"div\");\r\n el.tabIndex = 0;\r\n \r\n contents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\r\n \r\n if(contents instanceof HTMLElement){\r\n el.appendChild(contents)\r\n }else{\r\n el.innerHTML = contents;\r\n }\r\n \r\n if(item.group){\r\n el.classList.add(\"tabulator-edit-list-group\");\r\n }else{\r\n el.classList.add(\"tabulator-edit-list-item\");\r\n }\r\n \r\n el.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\r\n \r\n if(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n for (let key in item.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n el.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n }else{\r\n el.setAttribute(key, item.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n \r\n if(item.group){\r\n el.addEventListener(\"click\", this._groupClick.bind(this, item));\r\n }else{\r\n el.addEventListener(\"click\", this._itemClick.bind(this, item));\r\n }\r\n \r\n el.addEventListener(\"mousedown\", this._preventBlur.bind(this));\r\n \r\n item.element = el;\r\n }\r\n \r\n this._styleItem(item);\r\n \r\n this.listEl.appendChild(el);\r\n \r\n if(item.group){\r\n item.options.forEach((option) => {\r\n this._buildItem(option);\r\n });\r\n }else{\r\n this.displayItems.push(item);\r\n }\r\n }\r\n }\r\n \r\n _showList(){\r\n var startVis = this.popup && this.popup.isVisible();\r\n \r\n if(this.input.parentNode){\r\n if(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\r\n if(this.popup){\r\n this.popup.hide(true);\r\n return;\r\n }\r\n }\r\n \r\n this._setListWidth();\r\n \r\n if(!this.popup){\r\n this.popup = this.edit.popup(this.listEl);\r\n }\r\n \r\n this.popup.show(this.cell.getElement(), \"bottom\")\r\n \r\n if(!startVis){\r\n this.popup.hideOnBlur(this._resolveValue.bind(this, true));\r\n }\r\n }\r\n }\r\n \r\n _styleItem(item){\r\n if(item && item.element){\r\n if(item.selected){\r\n item.element.classList.add(\"active\");\r\n }else{\r\n item.element.classList.remove(\"active\");\r\n }\r\n }\r\n }\r\n \r\n //////////////////////////////////////\r\n ///////// User Interaction ///////////\r\n //////////////////////////////////////\r\n \r\n _itemClick(item, e){\r\n e.stopPropagation();\r\n \r\n this._chooseItem(item);\r\n }\r\n \r\n _groupClick(item, e){\r\n e.stopPropagation();\r\n }\r\n \r\n \r\n //////////////////////////////////////\r\n ////// Current Item Management ///////\r\n //////////////////////////////////////\r\n \r\n _cancel(){\r\n this.popup.hide(true);\r\n this.actions.cancel();\r\n }\r\n \r\n _clearChoices(){\r\n this.typing = true;\r\n \r\n this.currentItems.forEach((item) => {\r\n item.selected = false;\r\n this._styleItem(item);\r\n });\r\n \r\n this.currentItems = [];\r\n \r\n this.focusedItem = null;\r\n }\r\n \r\n _chooseItem(item, silent){\r\n var index;\r\n \r\n this.typing = false;\r\n \r\n if(this.params.multiselect){\r\n index = this.currentItems.indexOf(item);\r\n \r\n if(index > -1){\r\n this.currentItems.splice(index, 1);\r\n item.selected = false;\r\n }else{\r\n this.currentItems.push(item);\r\n item.selected = true;\r\n }\r\n \r\n this.input.value = this.currentItems.map(item => item.label).join(\",\");\r\n \r\n this._styleItem(item);\r\n \r\n }else{\r\n this.currentItems = [item];\r\n item.selected = true;\r\n \r\n this.input.value = item.label;\r\n \r\n this._styleItem(item);\r\n \r\n if(!silent){\r\n this._resolveValue();\r\n }\r\n }\r\n \r\n this._focusItem(item);\r\n }\r\n \r\n _resolveValue(blur){\r\n var output, initialValue;\r\n \r\n this.popup.hide(true);\r\n \r\n if(this.params.multiselect){\r\n output = this.currentItems.map(item => item.value);\r\n }else{\r\n if(blur && this.params.autocomplete && this.typing){\r\n if(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\r\n output = this.input.value;\r\n }else{\r\n this.actions.cancel();\r\n return;\r\n }\r\n }else{\r\n if(this.currentItems[0]){\r\n output = this.currentItems[0].value;\r\n }else{\r\n initialValue = this.initialValues[0];\r\n \r\n if(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\r\n output = initialValue;\r\n }else{\r\n output = this.params.emptyValue;\r\n }\r\n }\r\n \r\n }\r\n }\r\n \r\n if(output === \"\"){\r\n output = this.params.emptyValue;\r\n }\r\n \r\n this.actions.success(output);\r\n \r\n if(this.isFilter){\r\n this.initialValues = output && !Array.isArray[output] ? [output] : output;\r\n }\r\n }\r\n \r\n}","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport list from './editors/list.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tlist:list,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\tif(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n\r\n if(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\r\n\t\tif(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\r\n\t console.warn(\"The select editor has been deprecated, please use the new list editor\");\r\n\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\r\n\tconsole.warn(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\r\n\r\n\teditorParams.autocomplete = true;\r\n\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false,\r\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\r\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tvar checkedValue = input.checked;\r\n\r\n\t\tif(trueValueSet && checkedValue){\r\n\t\t\tcheckedValue = editorParams.trueValue;\r\n\t\t}else if(falseValueSet && !checkedValue){\r\n\t\t\tcheckedValue = editorParams.falseValue;\r\n\t\t}else{\r\n\t\t\tcheckedValue = checkedValue;\r\n\t\t}\r\n\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn checkedValue;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn checkedValue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn checkedValue;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(cell, e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.table.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(cell = this.currentCell, e){\r\n\t\tvar nextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(cell = this.currentCell, e){\r\n\t\tvar nextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successful value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\treturn valid === true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;\r\n","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\r\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\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\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\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\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\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\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.styleCells[index] || styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.styleCells[index] || styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\t\tthis.tableInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.tableInitialized = true;\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\tcolumn.modules.filter.value = initialValue;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\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);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft + parseInt(this.table.columnManager.element.style.marginLeft);\r\n\r\n\t\t\t\t\tif(left !== headerPos){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.tableInitialized){\r\n\t\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\t\tthis.reloadData();\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tsign = \"\",\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tif(floatVal < 0){\r\n\t\tfloatVal = Math.abs(floatVal);\r\n\t\tsign = negativeSign;\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\tif (formatterParams.thousand !== false) {\r\n\t\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\t\twhile (rgx.test(integer)){\r\n\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t\t}\r\n\t}\r\n\r\n\treturn after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tfunction labelTraverse(path, data){\r\n\t\tvar item = path.shift(),\r\n\t\tvalue = data[item];\r\n\t\t\r\n\t\tif(path.length && typeof value === \"object\"){\r\n\t\t\treturn labelTraverse(path, value);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime;\r\n\r\n\t\tif(DT.isDateTime(value)){\r\n\t\t\t newDatetime = value;\r\n\t\t }else if(inputFormat === \"iso\"){\r\n\t\t\t newDatetime = DT.fromISO(String(value));\r\n\t\t }else{\r\n\t\t\t newDatetime = DT.fromFormat(String(value), inputFormat);\r\n\t\t }\r\n\r\n\t\tif(newDatetime.isValid){\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\t\t\tif(invalid === true || !value){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime;\r\n\r\n\t\tif(DT.isDateTime(value)){\r\n\t\t\t newDatetime = value;\r\n\t\t }else if(inputFormat === \"iso\"){\r\n\t\t\t newDatetime = DT.fromISO(String(value));\r\n\t\t }else{\r\n\t\t\t newDatetime = DT.fromFormat(String(value), inputFormat);\r\n\t\t }\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1 || \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\tvar blocked = false;\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\r\n\t\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\t\tif(!blocked){\r\n\t\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tblocked = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\tblocked = true;\r\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\t\tthis.blocked = true;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\t\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\r\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.reinitializeColumns.bind(this));\r\n\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\r\n\t}\r\n\t\r\n\tblockLayout(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\t\r\n\tunblockLayout(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n\t\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\r\n\treinitializeColumns(){\r\n\t\tthis.reset();\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\t\t\r\n\t\tif(!column.isGroup){\r\n\t\t\t\r\n\t\t\tif(this.frozenCheck(column)){\r\n\t\t\t\t\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\t\t\t\t\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.active = true;\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfrozenCheck(column){\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\t\t\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\t\t\t\r\n\t\t\tthis.calcMargins(true);\r\n\t\t\t\r\n\t\t\tthis.layoutColumnPosition();\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t//calculate margins for rows\r\n\tcalcMargins(scroll){\r\n\t\t\r\n\t\tif(!scroll){\r\n\t\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\t\t\t\r\n\t\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\t\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\t\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\t\tvar leftParents = [];\r\n\t\t\r\n\t\tvar leftMargin = 0;\r\n\t\tvar rightMargin = 0;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\t\r\n\t\t\tcolumn.modules.frozen.margin = (leftMargin + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tleftMargin += column.getWidth();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\trightMargin += column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - rightMargin) + \"px\";\r\n\t\t\t\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\t\r\n\t//layout columns appropriately\r\n\tlayout(){\r\n\t\tvar visibleRows = [],\r\n\t\totherRows = [];\r\n\r\n\t\tif(this.active && !this.blocked){\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition();\r\n\r\n\t\t\tvisibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t\totherRows = this.table.rowManager.getDisplayRows().filter(row => !visibleRows.includes(row));\r\n\r\n\t\t\totherRows.forEach((row) =>{\r\n\t\t\t\trow.deinitialize();\r\n\t\t\t});\r\n\r\n\t\t\tvisibleRows.forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutRow(row){\r\n\t\t// console.trace(\"row\")\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\t\t\r\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\r\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\r\n\t\t}\r\n\t\t\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tlayoutElement(element, column){\r\n\t\t\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\t\t\t\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\t\t\t\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\t\t\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trows.push(row);\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\t\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.element = false;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\t\t\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\t\t\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\tif(row.modules){\r\n\t\t\t\t\tdelete row.modules.group;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.arrowElement = false;\r\n\t\tthis.elementContents = false;\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\t\t\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\taddBindings(){\r\n\t\tvar toggleElement;\r\n\t\t\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\t\t\t\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\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);\r\n\t\t\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\t\r\n\t_addRowToGroup(row){\r\n\t\t\r\n\t\tvar level = this.level + 1;\r\n\t\t\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\t\t\t\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\t\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\t\t\r\n\t\trow.updateData(data);\r\n\t\t\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\t\t\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\trow.modules.group = this;\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\t\r\n\tscrollHeader(left){\r\n\t\tif(this.arrowElement){\r\n\t\t\tthis.arrowElement.style.marginLeft = left;\r\n\t\t\t\r\n\t\t\tthis.groupList.forEach(function(child){\r\n\t\t\t\tchild.scrollHeader(left);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowIndex(row){}\r\n\t\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\t\t\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\t\t\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\t\t\t\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\t\t\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\t\t\t\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\toutput.push(this);\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\t\t\t\t\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\t\t\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\t\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\t\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\t\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tvar prev = this.generateElement();\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\t\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tif(typeof this.visible == \"function\"){\r\n\t\t\t\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\t\t\t\t\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\t\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\t\r\n\t////////////// Standard Row Functions //////////////\r\n\t\r\n\tgetElement(){\r\n\t\treturn this.elementContents ? this.element : this.generateElement();\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.addBindings = false;\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\t\t\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\t// this.addBindings();\r\n\t\t\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\t\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\t\t\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\t\r\n\treinitializeHeight(){}\r\n\t\r\n\tcalcHeight(){}\r\n\t\r\n\tsetCellHeight(){}\r\n\t\r\n\tclearCellHeight(){}\r\n\t\r\n\tdeinitializeHeight(){}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureGroupSetup(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.initialize();\r\n\t\t}else{\r\n\t\t\tthis.configureGroupSetup();\r\n\t\t}\r\n\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.configureGroupSetup();\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\r\n\r\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList = [];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","import Module from '../../core/Module.js';\r\nimport Row from '../../core/row/Row.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Column from '../../core/column/Column.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\r\n\t\t\tif(this.table.originalElement.childNodes.length){\r\n\t\t\t\tthis.parseTable();\r\n\t\t\t}else{\r\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.\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.originalElement,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for Tabulator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for Tabulator inline options\r\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","import csv from './importers/csv.js';\r\nimport json from './importers/json.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n};","function csvImporter(input){\r\n var data = [],\r\n row = 0, \r\n col = 0,\r\n inQuote = false;\r\n \r\n //Iterate over each character\r\n for (let index = 0; index < input.length; index++) {\r\n let char = input[index], \r\n nextChar = input[index+1]; \r\n \r\n //Initialize empty row\r\n if(!data[row]){\r\n data[row] = [];\r\n }\r\n\r\n //Initialize empty column\r\n if(!data[row][col]){\r\n data[row][col] = \"\";\r\n }\r\n \r\n //Handle quotation mark inside string\r\n if (char == '\"' && inQuote && nextChar == '\"') { \r\n data[row][col] += char; \r\n index++;\r\n continue; \r\n }\r\n \r\n //Begin / End Quote\r\n if (char == '\"') { \r\n inQuote = !inQuote;\r\n continue;\r\n }\r\n \r\n //Next column (if not in quote)\r\n if (char == ',' && !inQuote) { \r\n col++;\r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CRLF) \r\n if (char == '\\r' && nextChar == '\\n' && !inQuote) { \r\n col = 0; \r\n row++; \r\n index++; \r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CR or LF) \r\n if ((char == '\\r' || char == '\\n') && !inQuote) { \r\n col = 0;\r\n row++;\r\n continue; \r\n }\r\n\r\n //Normal Character, append to column\r\n data[row][col] += char;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport default csvImporter;","export default function(input){\r\n try {\r\n return JSON.parse(input);\r\n } catch(e) {\r\n console.warn(\"JSON Import Error - File contents is invalid JSON\", e);\r\n return Promise.reject();\r\n }\r\n}","import Module from '../../core/Module.js';\r\n\r\nimport defaultImporters from './defaults/importers.js';\r\n\r\nclass Import extends Module{\r\n \r\n constructor(table){\r\n super(table);\r\n \r\n this.registerTableOption(\"importFormat\");\r\n this.registerTableOption(\"importReader\", \"text\");\r\n }\r\n \r\n initialize(){\r\n this.registerTableFunction(\"import\", this.importFromFile.bind(this));\r\n\r\n if(this.table.options.importFormat){\r\n this.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\r\n this.subscribe(\"data-load\", this.loadData.bind(this), 10);\r\n }\r\n }\r\n\r\n loadDataCheck(data){\r\n return typeof data === \"string\";\r\n }\r\n\r\n loadData(data, params, config, silent, previousData){\r\n return this.importData(this.lookupImporter(), data)\r\n .then(this.structureData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import data\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n\r\n lookupImporter(importFormat){\r\n var importer;\r\n \r\n if(!importFormat){\r\n importFormat = this.table.options.importFormat;\r\n }\r\n \r\n if(typeof importFormat === \"string\"){\r\n importer = Import.importers[importFormat];\r\n }else{\r\n importer = importFormat;\r\n }\r\n\r\n if(!importer){\r\n console.error(\"Import Error - Importer not found:\", importFormat);\r\n }\r\n \r\n return importer;\r\n }\r\n \r\n importFromFile(importFormat, extension){\r\n var importer = this.lookupImporter(importFormat);\r\n \r\n if(importer){\r\n return this.pickFile(extension)\r\n .then(this.importData.bind(this, importer))\r\n .then(this.structureData.bind(this))\r\n .then(this.setData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import file\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n }\r\n \r\n pickFile(extensions){\r\n return new Promise((resolve, reject) => {\r\n var input = document.createElement(\"input\");\r\n input.type = \"file\";\r\n input.accept = extensions;\r\n \r\n input.addEventListener(\"change\", (e) => {\r\n var file = input.files[0],\r\n reader = new FileReader(),\r\n data;\r\n \r\n switch(this.table.options.importReader){\r\n case \"buffer\":\r\n reader.readAsArrayBuffer(file);\r\n break;\r\n\r\n case \"binary\":\r\n reader.readAsBinaryString(file);\r\n break;\r\n\r\n case \"url\":\r\n reader.readAsDataURL(file);\r\n break;\r\n\r\n case \"text\":\r\n default:\r\n reader.readAsText(file);\r\n }\r\n \r\n reader.onload = (e) => {\r\n resolve(reader.result)\r\n };\r\n \r\n reader.onerror = (e) => {\r\n console.warn(\"File Load Error - Unable to read file\");\r\n reject();\r\n };\r\n });\r\n \r\n input.click();\r\n });\r\n }\r\n \r\n importData(importer, fileContents){\r\n var data = importer.call(this.table, fileContents);\r\n \r\n if(data instanceof Promise){\r\n return data;\r\n }else{\r\n return data ? Promise.resolve(data) : Promise.reject();\r\n }\r\n }\r\n\r\n structureData(parsedData){\r\n var data = [];\r\n \r\n if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\r\n if(this.table.options.autoColumns){\r\n data = this.structureArrayToObject(parsedData);\r\n }else{\r\n data = this.structureArrayToColumns(parsedData);\r\n }\r\n\r\n return data;\r\n }else{\r\n return parsedData;\r\n }\r\n }\r\n\r\n structureArrayToObject(parsedData){\r\n var columns = parsedData.shift();\r\n\r\n var data = parsedData.map((values) => {\r\n var row = {};\r\n\r\n columns.forEach((key, i) => {\r\n row[key] = values[i];\r\n })\r\n\r\n return row;\r\n })\r\n\r\n return data;\r\n }\r\n\r\n structureArrayToColumns(parsedData){\r\n var data = [],\r\n columns = this.table.getColumns();\r\n\r\n //remove first row if it is the column names\r\n if(columns[0] && parsedData[0][0]){\r\n if(columns[0].getDefinition().title === parsedData[0][0]){\r\n parsedData.shift();\r\n }\r\n }\r\n \r\n //convert row arrays to objects\r\n parsedData.forEach((rowData) => {\r\n var row = {};\r\n\r\n rowData.forEach((value, index) => {\r\n var column = columns[index];\r\n\r\n if(column){\r\n row[column.getField()] = value;\r\n }\r\n })\r\n\r\n data.push(row);\r\n });\r\n\r\n return data;\r\n }\r\n \r\n setData(data){\r\n return this.table.setData(data);\r\n }\r\n}\r\n\r\nImport.moduleName = \"import\";\r\n\r\n//load defaults\r\nImport.importers = defaultImporters;\r\n\r\nexport default Import;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tgroup:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings)\r\n\t\t\tObject.assign(mergedBindings, bindings)\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tbindingList.forEach((item) => {\r\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\r\n\t\t\t\t\t\t});\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\r\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\r\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 89\"],\r\n};","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nclass Menu extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.menuContainer = null;\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\t\r\n\t\tthis.currentComponent = null;\r\n\t\tthis.rootPopup = null;\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\r\n\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerClickMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t\t\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.deprecationCheck();\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\r\n\tdeprecationCheck(){\r\n\t\tif(typeof this.table.options.menuContainer !== \"undefined\"){\r\n\t\t\tconsole.warn(\"Use of the menuContainer option is now deprecated. Please use the popupContainer option instead\");\r\n\r\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\r\n\t\t}\r\n\t}\t\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextMenu\", \"headerClickMenu\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\r\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\r\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerMenu){\r\n\t\t\tthis.initializeColumnHeaderMenu(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\r\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\r\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderMenu(column){\r\n\t\tvar icon = column.definition.headerMenuIcon,\r\n\t\theaderMenuEl;\r\n\t\t\r\n\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\r\n\r\n\t\tif(icon){\r\n\t\t\tif(typeof icon === \"function\"){\r\n\t\t\t\ticon = icon(column.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tif(icon instanceof HTMLElement){\r\n\t\t\t\theaderMenuEl.appendChild(icon);\r\n\t\t\t}else{\r\n\t\t\t\theaderMenuEl.innerHTML = icon;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\t\t}\r\n\t\t\r\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadMenuTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuEvent(menu, e, component){\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\r\n\t\t\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\t\r\n\tloadMenu(e, component, menu, parentEl, parentPopup){\r\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\r\n\t\tmenuEl = document.createElement(\"div\"),\r\n\t\tpopup;\r\n\t\t\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\t\t\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.rootPopup){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.rootPopup){\r\n\t\t\t\tthis.rootPopup.hide();\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tpopup = parentPopup.child(menuEl);\r\n\t\t}\r\n\t\t\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\t\t\t\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\t\t\t\t\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\t\t\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.rootPopup.hide();\r\n\t\t});\r\n\t\t\r\n\t\tpopup.show(parentEl || e);\r\n\t\t\r\n\t\tif(popup === this.rootPopup){\r\n\t\t\tthis.rootPopup.hideOnBlur(() => {\r\n\t\t\t\tthis.rootPopup = null;\r\n\t\t\t\t\r\n\t\t\t\tif(this.currentComponent){\r\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\r\n\t\t\t\t\tthis.currentComponent = null;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.currentComponent = component;\r\n\r\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent())\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\t\t\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\t\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\t\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableColumns){\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\t\t\r\n\t\tif(!column.modules.frozen){\r\n\t\t\tcolEl = column.getElement();\r\n\t\t\t\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\t\t\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\t\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\t\t\t\t\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\t\t\t\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\t\t\t\t\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\t\t\t\t\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement(),\r\n\t\theaderElement = this.table.columnManager.getElement(),\r\n\t\theadersElement = this.table.columnManager.getHeadersElement();\r\n\t\t\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\t\t\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\t\t\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\t\t\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\t\t\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\t\t\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\r\n\t\t\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\t\t\t\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\t\t\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\t\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\t\t\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\t\t\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\t\t\t\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\t\t\t\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\t\t\t\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\t\t\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\t\t\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"mutateLink\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tmutateLink(cell){\r\n\t\tvar links = cell.column.definition.mutateLink;\r\n\r\n\t\tif(links){\r\n\t\t\tif(!Array.isArray(links)){\r\n\t\t\t\tlinks = [links];\r\n\t\t\t}\r\n\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tvar linkCell = cell.row.getCell(link);\r\n\r\n\t\t\t\tif(linkCell){\r\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","export default {};","import rows from './pageCounters/rows.js';\r\nimport pages from './pageCounters/pages.js';\r\n\r\n\r\nexport default {\r\n\trows:rows,\r\n\tpages:pages,\r\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\tvar el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\r\n\tif(totalRows){\r\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\r\n\t\t\r\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\r\n\t\t\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(ofEl);\r\n\t\tel.appendChild(totalEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}else{\r\n\t\tvalueEl.innerHTML = \" 0 \";\r\n\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}\r\n\t\r\n\treturn el;\r\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\r\n var el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\t\r\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tel.appendChild(showingEl);\r\n\tel.appendChild(valueEl);\r\n\tel.appendChild(ofEl);\r\n\tel.appendChild(totalEl);\r\n\tel.appendChild(rowsEl);\r\n\t\r\n\treturn el;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPageCounters from './defaults/pageCounters.js';\r\n\r\nclass Page extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\t\t\r\n\t\tthis.element = null;\r\n\t\tthis.pageCounterElement = null;\r\n\t\tthis.pageCounter = null;\r\n\t\t\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.remoteRowCountEstimate = null;\r\n\t\t\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\t\t\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\t\t\r\n\t\tthis.pageSizes = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\r\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\t\t\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\t\t\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\r\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\t\t\t\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePageCounter();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn {index, top}\r\n\t}\r\n\t\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\t\t\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\t\t\t\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\t\t\t\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\t\t\t\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\r\n\t\t\r\n\t\tthis.generatePageSizeSelectList();\r\n\t}\r\n\t\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\t\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\t\t\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn Promise.reject();\r\n\t}\r\n\t\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\t\t\t\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\t\t\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\t\t\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\t\t\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\t\t\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\t\t\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\t\t\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\t\t\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\t\t\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\t\t\t\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\t\t\t\t\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializePageCounter(){\r\n\t\tvar counter = this.table.options.paginationCounter,\r\n\t\tpageCounter = null;\r\n\t\t\r\n\t\tif(counter){\r\n\t\t\tif(typeof counter === \"function\"){\r\n\t\t\t\tpageCounter = counter;\r\n\t\t\t}else{\r\n\t\t\t\tpageCounter = Page.pageCounters[counter];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(pageCounter){\r\n\t\t\t\tthis.pageCounter = pageCounter;\r\n\t\t\t\t\r\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\r\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup pagination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel, paginationCounterHolder;\r\n\t\t\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\t\t\t\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\t\t\t\t\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\t\t\t\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tif(this.table.options.paginationCounter){\r\n\r\n\t\t\t\t\tpaginationCounterHolder \r\n\r\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\r\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\r\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\r\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(paginationCounterHolder){\r\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.footerAppend(this.pageCounterElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.footerAppend(this.element);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\t\t}\r\n\t\t\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\t\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\t\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\t\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\t\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\t\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set the maximum page\r\n\tsetMaxPage(max){\r\n\t\t\r\n\t\tmax = parseInt(max);\r\n\t\t\r\n\t\tthis.max = max || 1;\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t\r\n\t\tpage = parseInt(page);\r\n\t\t\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\t\t\t\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\t\t\r\n\t\tthis.trackChanges();\r\n\t}\r\n\t\r\n\t_setPageCounter(totalRows, size, currentRow){\r\n\t\tvar content;\r\n\t\t\r\n\t\tif(this.pageCounter){\r\n\r\n\t\t\tif(this.mode === \"remote\"){\r\n\t\t\t\tsize = this.size;\r\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\r\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\r\n\t\t\t}\r\n\r\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\r\n\t\t\t\r\n\t\t\tswitch(typeof content){\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\tif(content instanceof Node){\r\n\t\t\t\t\t\r\n\t\t\t\t\t//clear previous cell contents\r\n\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageCounterElement.appendChild(content);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(content != null){\r\n\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);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"undefined\":\r\n\t\t\t\tcase \"null\":\r\n\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.pageCounterElement.innerHTML = content;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\t\t\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\t\t\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\t\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\t\t\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\t\t\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\t\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\t\t\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\t\t\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\t\t\r\n\t\treturn button;\r\n\t}\r\n\t\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger()\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\t\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\t\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\t\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\t\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar actualRowPageSize = 0,\r\n\t\toutput, start, end, actualStartRow;\r\n\r\n\t\tvar actualRows = data.filter((row) => {\r\n\t\t\treturn row.type === \"row\";\r\n\t\t});\r\n\t\t\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\t\t\t\r\n\t\t\tthis.setMaxRows(data.length);\r\n\t\t\t\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageButtons();\r\n\t\t\t\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tlet row = data[i];\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\toutput.push(row);\r\n\r\n\t\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\t\tif(!actualStartRow){\r\n\t\t\t\t\t\t\tactualStartRow = row;\r\n\t\t\t\t\t\t}\t\r\n\r\n\t\t\t\t\t\tactualRowPageSize++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\r\n\t\t\t\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\t\t\tthis._setPageCounter(actualRows.length);\r\n\t\t\t\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrigger(){\r\n\t\tvar left;\r\n\t\t\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\t\t\t\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\t\t\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\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));\r\n\t\t\t\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\t\t\t\t\t\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\treturn data.data;\r\n\t}\r\n\t\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.containerElement;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\t\t\t\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\n//load defaults\r\nPage.pageCounters = defaultPageCounters;\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.slice(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.slice(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};\r\n","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.options.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.options.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\nPersistence.moduleInitOrder = -10;\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Popup extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\r\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\r\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\r\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextPopup\");\r\n\t\tthis.registerColumnOption(\"headerClickPopup\");\r\n\t\tthis.registerColumnOption(\"headerPopup\");\r\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\r\n\t\tthis.registerColumnOption(\"contextPopup\");\r\n\t\tthis.registerColumnOption(\"clickPopup\");\r\n\t\t\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextPopup){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickPopup){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextPopup){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickPopup){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextPopup\", \"headerClickPopup\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\r\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\r\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerPopup){\r\n\t\t\tthis.initializeColumnHeaderPopup(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\r\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\r\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderPopup(column){\r\n\t\tvar icon = column.definition.headerPopupIcon,\r\n\t\theaderPopupEl;\r\n\t\t\r\n\t\theaderPopupEl = document.createElement(\"span\");\r\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\r\n\r\n\t\tif(icon){\r\n\t\t\tif(typeof icon === \"function\"){\r\n\t\t\t\ticon = icon(column.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tif(icon instanceof HTMLElement){\r\n\t\t\t\theaderPopupEl.appendChild(icon);\r\n\t\t\t}else{\r\n\t\t\t\theaderPopupEl.innerHTML = icon;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\r\n\t\t}\r\n\t\t\r\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadPopupTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadPopupTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadPopupEvent(contents, e, component){\r\n\t\tvar renderedCallback;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trenderedCallback = callback;\r\n\t\t}\r\n\t\t\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\r\n\t\t\r\n\t\tthis.loadPopup(e, component, contents, renderedCallback);\r\n\t}\r\n\t\r\n\tloadPopup(e, component, contents, renderedCallback){\r\n\t\tvar touch = !(e instanceof MouseEvent),\r\n\t\tcontentsEl, popup;\r\n\t\t\r\n\t\tif(contents instanceof HTMLElement){\r\n\t\t\tcontentsEl = contents;\r\n\t\t}else{\r\n\t\t\tcontentsEl = document.createElement(\"div\");\r\n\t\t\tcontentsEl.innerHTML = contents;\r\n\t\t}\r\n\t\t\r\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\r\n\r\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\tpopup = this.popup(contentsEl);\r\n\r\n\t\tif(typeof renderedCallback === \"function\"){\r\n\t\t\tpopup.renderCallback(renderedCallback);\r\n\t\t}\r\n\t\t\r\n\t\tpopup.show(e).hideOnBlur(() => {\r\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\r\n\t\t});\r\n\r\n\r\n\r\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent())\r\n\t}\r\n}\r\n\r\nPopup.moduleName = \"popup\";\r\n\r\nexport default Popup;\r\n","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar self = this,\r\n\t\tpushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn self.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.latestX = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.initialNextColumn = null;\r\n\t\tthis.nextColumn = null;\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\r\n\t}\r\n\t\r\n\tinitializeEventWatchers(){\r\n\t\tif(!this.initialized){\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\r\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.deInitializeComponent(cell);\r\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutColumnHeader(column){\r\n\t\tif(column.definition.resizable){\r\n\t\t\tthis.initializeEventWatchers();\r\n\t\t\tthis.deInitializeComponent(column);\r\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolumnLayoutUpdated(column){\r\n\t\tvar prev = column.prevColumn();\r\n\t\t\r\n\t\tthis.reinitializeColumn(column);\r\n\t\t\r\n\t\tif(prev){\r\n\t\t\tthis.reinitializeColumn(prev);\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeColumn(column){\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\r\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\r\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(type, component, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable,\r\n\t\tconfig = {},\r\n\t\tnearestColumn = column.getLastColumn();\r\n\t\t\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tconfig = {variableHeight:variableHeight};\r\n\t\t}\r\n\t\t\r\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\r\n\t\t\t\r\n\t\t\tvar handle = document.createElement('span');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tself.startColumn = column;\r\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\r\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//resize column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\r\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\r\n\t\t\t\t\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tnearestColumn.reinitializeWidth(true);\r\n\t\t\t\t\r\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\r\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tconfig.handleEl = handle;\r\n\t\t\t\r\n\t\t\tif(element.parentNode){\r\n\t\t\t\telement.after(handle);\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tcomponent.modules.resize = config;\r\n\t}\r\n\t\r\n\tdeInitializeColumn(column){\r\n\t\tthis.deInitializeComponent(column);\r\n\t\t\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tthis.deInitializeComponent(cell);\r\n\t\t});\r\n\t}\r\n\t\r\n\tdeInitializeComponent(component){\r\n\t\tvar handleEl;\r\n\t\t\r\n\t\tif(component.modules.resize){\r\n\t\t\thandleEl = component.modules.resize.handleEl;\r\n\t\t\t\r\n\t\t\tif(handleEl && handleEl.parentElement){\r\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tresizeHandle(component, height){\r\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\r\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\t\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\t\t\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\tfunction mouseMove(e){\r\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\r\n\t\t\tstartDiff = x - self.startX,\r\n\t\t\tmoveDiff = x - self.latestX,\r\n\t\t\tblockedBefore, blockedAfter;\r\n\r\n\t\t\tself.latestX = x;\r\n\t\t\t\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tstartDiff = -startDiff;\r\n\t\t\t\tmoveDiff = -moveDiff;\r\n\t\t\t}\r\n\r\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\r\n\r\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\r\n\r\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\r\n\r\n\t\t\tif(moveDiff < 0){\r\n\t\t\t\tself.nextColumn = self.initialNextColumn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\r\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\r\n\r\n\t\t\t\tif(moveDiff > 0){\r\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\r\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(self.nextColumn){\r\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\t\t\t\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tfunction mouseUp(e){\r\n\t\t\t\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\t\t\t\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\t\t\t\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(self.startWidth !== column.getWidth()){\r\n\t\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\t\t\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\t\t\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.latestX = self.startX;\r\n\t\tself.startWidth = column.getWidth();\r\n\t\t\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate responsive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//determine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\r\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort((a, b) => {\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initializeResponsivity();\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\t\t\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\t\t\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\r\n\t\t\t\r\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\t\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\t\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\t\t\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\t\t\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\t\t\t\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\t\t\r\n\t\trow.modules.select = {selected:false};\r\n\t\t\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\t\t\t\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\t\r\n\thandleComplexRowClick(row, e){\r\n\t\tif(e.shiftKey){\r\n\t\t\tthis.table._clearSelection();\r\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\r\n\t\t\t\r\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\r\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\r\n\t\t\t\r\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\r\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\t\t\t\r\n\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\r\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\r\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\r\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.lastClickedRow = row;\r\n\t\t\t}else{\r\n\t\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.selectable !== true){\r\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\r\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectRows(toggledRows);\r\n\t\t\t}\r\n\t\t\tthis.table._clearSelection();\r\n\t\t}\r\n\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\tthis.toggleRow(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}else{\r\n\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\tthis.selectRows(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\t\t\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"string\":\r\n\t\t\t\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\t\t\t\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\t\t\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\t\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\t\t\r\n\t\tif(typeof rows == \"undefined\"){\r\n\t\t\t\r\n\t\t\trowCount = self.selectedRows.length;\r\n\t\t\t\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(rowCount){\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\t\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tgetSelectedRows(){\r\n\t\t\r\n\t\tvar rows = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\t\t\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\t\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\t\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\t\t\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tif(DT.isDateTime(a)){\r\n\t\t\t a = a;\r\n\t\t}else if(format === \"iso\"){\r\n\t\t\t a = DT.fromISO(String(a));\r\n\t\t}else{\r\n\t\t\t a = DT.fromFormat(String(a), format);\r\n\t\t}\r\n\r\n\t\tif(DT.isDateTime(b)){\r\n\t\t\t b = b;\r\n\t\t}else if(format === \"iso\"){\r\n\t\t\t b = DT.fromISO(String(b));\r\n\t\t}else{\r\n\t\t\t b = DT.fromFormat(String(b), format);\r\n\t\t}\r\n\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData(true);\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","import Module from '../../core/Module.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nclass Tooltip extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.tooltipSubscriber = null,\r\n\t\tthis.headerSubscriber = null,\r\n\t\t\r\n\t\tthis.timeout = null;\r\n\t\tthis.popupInstance = null;\r\n\t\t\r\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\r\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \r\n\t\t\r\n\t\tthis.registerColumnOption(\"tooltip\");\r\n\t\tthis.registerColumnOption(\"headerTooltip\");\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.deprecationCheck();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tdeprecationCheck(){\r\n\t\tif(typeof this.table.options.tooltipGenerationMode !== \"undefined\"){\r\n\t\t\tconsole.warn(\"Use of the tooltipGenerationMode option is now deprecated. This option is no longer needed as tooltips are always generated on hover now\");\r\n\t\t}\r\n\t}\t\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\r\n\t\t\tthis.headerSubscriber = true;\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\r\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\r\n\t\t\tthis.tooltipSubscriber = true;\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\r\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\r\n\t\t}\r\n\t}\r\n\t\r\n\tmousemoveCheck(action, e, component){\r\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\r\n\t\t\r\n\t\tif(tooltip){\r\n\t\t\tthis.clearPopup();\r\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\r\n\t\t}\r\n\t}\r\n\r\n\tmouseoutCheck(action, e, component){\r\n\t\tif(!this.popupInstance){\r\n\t\t\tthis.clearPopup();\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearPopup(action, e, component){\r\n\t\tclearTimeout(this.timeout);\r\n\t\tthis.timeout = null;\r\n\t\t\r\n\t\tif(this.popupInstance){\r\n\t\t\tthis.popupInstance.hide();\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadTooltip(e, component, tooltip){\r\n\t\tvar contentsEl, renderedCallback, coords;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trenderedCallback = callback;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof tooltip === \"function\"){\r\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\r\n\t\t}\r\n\t\t\r\n\t\tif(tooltip instanceof HTMLElement){\r\n\t\t\tcontentsEl = tooltip;\r\n\t\t}else{\r\n\t\t\tcontentsEl = document.createElement(\"div\");\r\n\t\t\t\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(component instanceof Cell){\r\n\t\t\t\t\ttooltip = component.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(component.definition.field){\r\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\r\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\ttooltip = component.definition.title;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcontentsEl.innerHTML = tooltip;\r\n\t\t}\r\n\t\t\r\n\t\tif(tooltip || tooltip === 0 || tooltip === \"0\" || tooltip === false){\r\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\r\n\r\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault())\r\n\t\t\t\r\n\t\t\tthis.popupInstance = this.popup(contentsEl);\r\n\t\t\t\r\n\t\t\tif(typeof renderedCallback === \"function\"){\r\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\r\n\t\t\t}\r\n\r\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\r\n\t\t\t\r\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\r\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\r\n\t\t\t\tthis.popupInstance = null;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\r\n\t\t}\r\n\t}\r\n}\r\n\r\nTooltip.moduleName = \"tooltip\";\r\n\r\nexport default Tooltip;\r\n","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.invalidCells = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\t\t\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\t\t\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\t\t\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\t\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\r\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\r\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Event Handling //////////\r\n\t///////////////////////////////////\r\n\t\r\n\teditValidate(cell, value, previousValue){\r\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\r\n\t\t\r\n\t\t// allow time for editor to make render changes then style cell\r\n\t\tif(valid !== true){\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn valid;\r\n\t}\r\n\t\r\n\teditorClear(cell, cancelled){\r\n\t\tif(cancelled){\r\n\t\t\tif(cell.column.modules.validate){\r\n\t\t\t\tthis.cellValidate(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t}\r\n\t\r\n\teditedClear(cell){\r\n\t\tif(cell.modules.validate){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\r\n\t}\r\n\t\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\t\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\t\t\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\t\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\t\t\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\t\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\t\t\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\t\t\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\t\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trow = row.getComponent();\r\n\t\t\t\r\n\t\t\tvar valid = row.validate();\r\n\t\t\t\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\t\t\r\n\t\tif(column.definition.validator){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\t\t\t\t\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\t\t\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\t\t\t\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_buildValidator(type, params){\r\n\t\t\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\t\t\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\t\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tfailedValidators = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\t\t\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach((item) => {\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tfailedValidators.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\t\t\r\n\t\tif(!failedValidators.length){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = failedValidators;\r\n\t\t\t\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn failedValidators.length ? failedValidators : true;\r\n\t}\r\n\t\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\t\t\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\t\t\t\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\t\t\t\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","//tabulator with all modules installed\r\nimport {default as Tabulator} from './Tabulator.js';\r\nimport * as modules from '../core/modules/optional.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nclass TabulatorFull extends Tabulator {};\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(TabulatorFull, modules);\r\n\r\nexport default TabulatorFull;"],"names":["CoreFeature","table","data","silent","this","dataLoader","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","options","value","module","ColumnComponent","column","_column","type","Proxy","get","target","name","receiver","componentFunctionBinder","handle","getElement","getDefinition","getField","getTitleDownload","cells","forEach","cell","push","getComponent","visible","isGroup","columns","show","hide","output","length","parent","Column","columnManager","scrollToColumn","to","after","toColumn","findColumn","moveColumn","console","warn","nextCol","nextColumn","prevCol","prevColumn","updates","updateDefinition","getWidth","width","result","reinitializeWidth","setWidth","renderer","rerenderColumns","CellComponent","_cell","getValue","getOldValue","initialValue","row","getData","mutate","setValue","setValueActual","checkHeight","Cell","element","oldValue","height","minWidth","component","loaded","build","generateElement","_configureCell","getFieldValue","document","createElement","className","setAttribute","field","style","textAlign","hozAlign","vertAlign","display","alignItems","top","bottom","middle","justifyContent","left","right","center","definition","cssClass","split","classList","add","val","_this2","innerHTML","Node","firstChild","removeChild","appendChild","containerOnly","layoutElement","force","setValueProcessData","cellRendered","cellEdited","call","dispatchExternal","subscribedExternal","rowManager","changed","setFieldValue","_generateContents","widthStyled","offsetWidth","minWidthStyled","maxWidth","maxWidthStyled","reinitializeHeight","heightStyled","offsetHeight","redrawBlock","parentNode","deleteCell","calcs","getCellIndex","def","_this","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleDownload","titleFormatterRendered","mapDefinitions","setField","maxInitialWidth","widthFixed","i","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","bindModuleColumns","el","defaults","columnDefaults","optionsList","generate","defaultOptionList","Object","keys","indexOf","title","nestedFieldSeparator","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","dblTap","tapHold","tap","headerClick","addEventListener","e","_this3","headerDblClick","headerContext","headerTap","passive","headerDblTap","clearTimeout","setTimeout","headerTapHold","_this4","setMinWidth","parseInt","setMaxWidth","headerHozAlign","_buildColumnHeaderTitle","editableTitle","stopPropagation","focus","_this5","langBind","text","_formatColumnHeaderTitle","contents","_this6","dataObj","structure","columnRendered","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","minHeight","paddingTop","verticalAlign","clearVerticalAlign","formatter","rowNumColumn","getFirstColumn","getLastColumn","getTopColumn","updateBranches","colDefs","responsiveToggle","verticalAlignHeaders","matchChildWidths","childWidth","child","index","splice","setWidthActual","isNaN","Math","floor","clientWidth","max","min","rows","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","ceil","getBoundingClientRect","Promise","resolve","reject","_this7","cellCount","deregisterColumn","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","fitToData","clearWidth","setTo","error","assign","addColumn","then","_this8","defaultOptions","Helpers","box","window","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","obj","clone","list","objectProto","__proto__","arrayProto","Array","isArray","subject","match","copy","_typeof","findIndex","item","unshift","deepClone","OptionsList","msgType","registeredDefaults","option","userOptions","debugInvalidOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","tableElement","verticalFillMode","callback","update","blockRedraw","dir","includingBuffer","getDisplayRows","rowEl","remove","clearRows","clearColumns","renderRows","renderColumns","rerenderRows","position","ifVisible","rowIndex","offset","scrollToRowIfVisible","elVisible","elOffset","scrollToRowPosition","scrollToRowNearestTop","scrollToRow","scrollHeight","scrollTop","offsetTop","BaiscHorizontal","VirtualDomHorizontal","leftCol","rightCol","scrollLeft","vDomScrollPosLeft","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","windowBuffer","visibleRows","initialized","isFitData","compatibilityCheck","layoutCheck","vertScrollListen","ok","find","col","frozen","startsWith","clearVisRowCache","dataChange","scroll","buffer","columnsByIndex","old","cols","colPos","clear","calcWindowBuffer","config","leftPos","rightPos","fitDataCheck","vdomHoz","paddingLeft","paddingRight","reinitChanged","reinitializeRows","initializeRow","reinitializeRow","change","colEnd","generateCells","layoutRefresh","getVisibleRows","diff","abs","addColRight","removeColLeft","addColLeft","removeColRight","start","end","changes","getCell","fitDataColActualWidthCheck","prepend","ex","message","_this9","newWidth","widthDiff","colPositionAdjust","ColumnManager","blockHozScrollEvent","headersElement","columnsByField","defaultColumnOptions","initializeRenderer","createHeadersElement","createHeaderElement","insertBefore","scrollHorizontal","renderClass","renderers","RendererVirtualDomHorizontal","RendererBasicHorizontal","renderHorizontal","initialize","headerVisible","hozAdjust","scrollWidth","marginLeft","scrollColumns","sorter","definitions","autoColumnsDefinitions","setColumns","_addColumn","_reIndexColumns","redraw","before","nextToColumn","colEl","topColumn","parentIndex","nextEl","nextSibling","getHeight","columnHeaderVertAlign","adjustTableSize","_getSelf","HTMLElement","root","matches","active","structured","from","moveColumnActual","reinitialize","_moveColumnInArray","getComponents","updateRows","toIndex","fromIndex","concat","adjust","scrollToColumnPosition","scrollToColumnIfVisible","offsetLeft","generateCell","totalWidth","fixedWidth","colWidth","layoutMode","resetScroll","footerManager","RowComponent","_row","transform","getCells","getRowPosition","moveToRow","updateData","normalizeHeight","nextRow","prevRow","Row","manualHeight","outerHeight","created","setData","create","deleteCells","renderRowCells","rowFormatter","rerenderRowCells","children","maxHeight","rowHeight","resizableRows","setHeight","clearHeight","updatedData","newRowData","tempData","attrname","JSON","parse","getColumnsByFieldRoot","findCell","nextDisplayRow","prevDisplayRow","toRow","findRow","moveRowActual","refreshActiveData","deleteActual","getRowIndex","detatchModules","deleteRow","group","BaiscVertical","visibility","onlyGroupHeaders","styleRow","rowTop","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topRow","topOffset","deinitializeHeight","topDiff","bottomDiff","margin","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","renderVerticalBuffer","topEdge","bottomEdge","topFound","bottomRow","slice","forceMove","holder","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","containerHeight","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","placeholder","placeholderContents","firstRender","renderMode","fixedHeight","activeRowsPipeline","activeRows","activeRowsCount","displayRows","displayRowsCount","redrawBlockRestoreConfig","redrawBlockRenderInPosition","dataPipeline","displayPipeline","initializePlaceholder","leftDir","topDir","_positionPlaceholder","scrollRows","renderInPosition","columnsChanged","pagination","_setDataActual","reRenderInPosition","autoColumns","generateColumnsFromRowData","_wipeElements","wipe","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","regenerateRowNumbers","_showPlaceholder","pos","addRowActual","findAddRowPos","reverse","addRow","_clearPlaceholder","addRowPos","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","getRows","handler","priority","sort","a","b","skipStage","stage","cascadeOrder","refreshPipelines","renderTable","layoutColumnsOnNewData","resetDisplayRows","setDisplayRows","viewable","RendererVirtualDomVertical","RendererBasicVertical","renderVertical","_clearTable","renderEmptyScroll","initialHeight","otherHeight","external","resize","tableWidth","browser","event","createEvent","initEvent","dispatchEvent","Event","FooterManager","containerElement","createContainerElement","initializeElement","footerElement","querySelector","activate","deactivate","InteractionManager","abortClasses","previousTargets","listeners","componentMap","pseudoTrackers","subscriber","pseudoTracking","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","pseudoMouseEnter","pseudoMouseLeave","leaveList","linkedKeys","filter","links","includes","values","comp","subscriptionChanged","clearWatchers","added","bindPseudoEvents","updateEventListeners","track","removeEventListener","path","composedPath","targets","findTargets","bindComponents","triggerEvents","targetMatches","previousTarget","closest","ComponentFunctionBinder","bindings","funcName","DataLoader","requestOrder","loading","params","replace","requestNo","alertLoader","mapParams","dataSendParams","response","objectInvert","dataReceiveParams","rowData","clearAlert","alertError","dataLoaderErrorTimeout","map","alertManager","alert","dataLoaderLoading","langText","dataLoaderError","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifiySubscriptionChange","notifiers","args","shift","callResult","apply","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","confirmed","TableRegistry","tables","query","results","querySelectorAll","matchElement","Tabulator","lookupTable","Popup","container","_lookupContainer","reversedX","childPopup","blurable","blurCallback","renderedCallback","blurEvent","escEvent","_escapeCheck","popupContainer","_checkContainerIsParent","body","touch","MouseEvent","x","touches","pageX","y","pageY","parentOffset","containerOffset","origin","parentEl","coords","elementPositionCoords","containerEventCoords","_fitToScreen","keyCode","Module","_handler","register","func","initGuard","registerDataPipelineHandler","registerDisplayPipelineHandler","append","menuEl","menuContainer","content","responsiveLayout","modExists","fitData","reinitializeColumnWidths","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","registerTableOption","registerColumnOption","modes","moduleName","defaultModes","Localize","locale","lang","langList","langs","headerFilterPlaceholder","setHeaderFilterPlaceholder","installLang","setLocale","registerTableFunction","getLang","headerFilters","_setLangProp","desiredLocale","navigator","language","toLowerCase","prefix","traverseLang","trans","prop","_executeBindings","pathArray","_getLangElement","level","rootPath","binding","Comms","receive","selectors","connections","con","action","connection","tableComms","commsReceived","ModuleBinder","tabulator","bindStaticFuctionality","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","rtl","originalElement","initializeCoreSystems","_create","_clearObjectPointers","_mapDeprecatedFunctionality","debugEventsExternal","debugEventsInternal","InteractionMonitor","getSelection","empty","removeAllRanges","selection","_rtlCheck","_buildElement","_initializeTable","_loadInitialData","getComputedStyle","textDirection","direction","reactiveData","newElement","tagName","attributes","replaceChild","_detectBrowser","deregister","ua","userAgent","vendor","opera","test","msg","stack","line","debugInitialization","Error","trim","restoreRedraw","blockActiveLoad","clearData","getDataCount","responses","addRows","newRows","getRowFromPosition","foundRows","fromRow","getDefinitionTree","fromColumn","plugin","required","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","Accessor","allowedTypes","initializeColumn","transformRow","accessor","charAt","toUpperCase","lookupAccessor","accessors","rowComponent","traverse","colCompnent","generateParamsList","serializeParams","encoded","encodeURIComponent","join","url","method","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","json","status","statusText","defaultContentTypeFormatters","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboard","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","generateExportList","clipboardCopyConfig","clipboardCopyStyled","genereateHTMLTable","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","checkPaseOrigin","getPasteData","mutateData","mutator","valid","edit","currentCell","updateOrAddData","insert","addData","headerFindSuccess","columnMap","CalcComponent","calcParams","precision","reduce","sum","Number","toFixed","parseFloat","String","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","cellValueChanged","initializeColumnCheck","rowsUpdated","recalcActiveRows","recalcActiveRowsRefresh","tableRedraw","getResults","userRecalc","recalc","groupBy","recalcRowGroup","dataTreeStartExpanded","dataTree","recalcAll","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","footerRemove","footerPrepend","rowsToData","generateRow","frozenColumns","recalcGroup","groupRows","getRowGroup","getChildGroups","generateRowData","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","disable","enable","format","getFormatter","paramKey","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","groups","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","registerComponentFunction","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","isRowExpanded","dummyEl","dataTreeChildField","dataTreeChildIndent","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","layoutRow","rowDelete","rowDataChanged","columnMoving","initializeElementField","registerDisplayHandler","firstCol","getFirstVisibleColumn","dataTreeElementColumn","getTreeChildren","redrawNeeded","refreshData","childArray","controlEl","generateControlElement","cloneNode","marginRight","getPropertyValue","oldControl","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","sub","childData","childRow","childIndex","findChildIndex","recurse","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","generateSheet","merges","worksheet","s","c","r","j","Date","sheet_add_aoa","encode_range","SheetNames","Sheets","sheetOnly","sheets","sheet","commsSend","intercept","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","bookType","bookSST","Download","blob","download","downloadToTab","filename","interceptCallback","downloadFunc","downloaders","mime","triggerDownload","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","Blob","downloadReady","URL","createObjectURL","msSaveOrOpenBlob","click","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","maskAutoFill","defaultDownloaders","Edit","editor","onRendered","success","cancel","editorParams","_initializeParams","displayItems","currentItems","focusedItem","input","_createInputElement","listEl","_createListElement","initialValues","isFilter","filterTimeout","filtered","typing","popup","listIteration","actions","_deprecationCheck","_initializeValue","_onRendered","listItemFormatter","sortValuesList","searchFunc","searchingPlaceholder","defaultValue","multiselect","headerFilterInitialListGen","cellEl","clickStop","preventScroll","_preventBlur","_inputKeyDown","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","_filterList","_clearChoices","_keyUp","_keyDown","_keySide","_keyEnter","_keyEsc","_keyHomeEnd","_keySelectLetter","_keyAutoCompLetter","stopImmediatePropagation","_focusItem","_chooseItem","_cancel","_scrollToValue","_filter","character","fromCharCode","filterTerm","label","scrollIntoView","behavior","block","inline","_generateOptions","_sortOptions","_buildList","_showList","isInteger","_filterOptions","itteration","_ajaxRequest","_uniqueColumnValues","valuesLookupField","_addPlaceholder","responseValues","_parseList","_clearList","term","urlBuilder","getColumnByField","getColumn","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","_this10","startVis","isVisible","_setListWidth","hideOnBlur","_resolveValue","_this11","blur","cellValue","search","onChange","selectContents","textarea","vertNav","whiteSpace","getRow","heightNow","selectionStart","number","step","blurFunc","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","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellisEdited","clearEdited","editCell","cellCancelEdit","bindEditor","columnDeleteCheck","rowDeleteCheck","cancelEdit","keybindingNavigateNext","newRow","edited","nextCell","findNextEditableCell","getIndex","findPrevEditableCell","allowEdit","check","prevCell","editable","clearEditor","variableHeight","cellEditCancelled","contains","button","forceEdit","focusCellNoEvent","getRenderMode","leftEdge","rightEdge","leftMargin","rightMargin","cellEditor","rendered","focusScrollAdjust","cellClick","cellEditing","validationMode","editIndex","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","genereateTableElement","selectRow","selectedRows","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","genereateHeaderElement","genereateGroupElement","genereateCalcElement","genereateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","classNames","generator","cellWrapper","formatCells","formatExportValue","align","htmlOutputConfig","props","lookup","fromStyle","filterVal","rowVal","filterParams","RegExp","keywords","separator","keyword","matchAll","endsWith","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","filterMode","remoteFilterParams","registerDataHandler","initialFilter","setFilter","initialHeaderFilter","refreshFilter","addFilter","removeFilter","all","clearFilter","clearHeaderFilter","headerFilter","setHeaderFilterColumnPlaceholder","filterType","tagType","attrType","filterChangeCheck","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","headerElement","headerFilterEmptyCheck","headerFilterParams","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","reloadData","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","_this12","defaultFilters","plaintext","formatterParams","emptyToSpace","sanitizeHTML","money","integer","decimal","rgx","floatVal","sign","decimalSym","thousandSym","thousand","negativeSign","symbolAfter","link","urlPrefix","labelField","labelTraverse","urlField","image","src","urlSuffix","truthy","allowTruthy","tick","tickElement","cross","crossElement","datetime","newDatetime","DT","DateTime","luxon","inputFormat","outputFormat","invalid","invalidPlaceholder","isDateTime","fromISO","fromFormat","isValid","timezone","setZone","toFormat","datetimediff","suffix","humanize","date","now","toHuman","traffic","percentValue","colors","color","legend","legendColor","legendAlign","barEl","barContainer","legendEl","holderEl","buttonTick","buttonCross","rownum","responsiveCollapse","toggleList","isOpen","rowSelection","checkbox","selectableRangeMode","toggleSelect","handleComplexRowClick","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","leftColumns","rightColumns","rightPadding","initializationMode","scrollEndTimer","layoutCell","reinitializeColumns","blockLayout","unblockLayout","edge","frozenCheck","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","layoutGroupCalcs","groupList","allCells","leftParents","getColGroupParentElement","deinitialize","getTableElement","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","styleRows","GroupComponent","groupManager","toggleVisibility","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","elementContents","arrowElement","createElements","addBindings","createValueGroups","arrow","movableRows","moveRow","initializeGroupHeader","allowedValues","_createGroup","groupToggleElement","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","updateGroupRows","scrollHeader","groupValues","removeGroup","noCalc","_visSet","getHeadersAndRows","hasTopCalcs","detachElement","generateTopRow","hasBottomCalcs","generateBottomRow","groupClosedShowCalcs","count","getDisplayIndex","checkClassicModeGroupHeaderWidth","prev","compoment","getPath","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","configureGroupSetup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","groupStartOpen","langValue","items","removeCalcs","getRealColumns","lookupFunc","prevValue","assignRowToGroup","getGroupedData","toGroup","fromGroup","removeRow","insertRow","generateGroups","groupComponents","groupListData","pullGroupListData","rowCount","headerContent","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","every","groupPath","groupId","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","posFrom","posTo","getGroup","newValue","undoers","redoers","oldRow","cellEdit","rowAdd","_rebindRow","rowMove","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","optionsArr","attrib","_attribValue","exists","_findCol","textContent","inQuote","nextChar","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","getColumns","defaultImporters","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","groupTap","groupDblTap","groupTapHold","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tapDbl","initializeExternalEvents","cellContentsSelectionFixer","selectNode","subscriptionChangeExternal","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","notouch","watchers","componentObj","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","mapBinding","symbolsList","ctrl","meta","code","checkBinding","ctrlKey","shiftKey","metaKey","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","keyBlock","newPos","scrollMax","navLeft","navRight","Menu","nestedMenuBlock","currentComponent","rootPopup","deprecationCheck","initializeRowWatchers","initializeGroupWatchers","rowContextMenu","loadMenuEvent","on","rowClickMenu","groupContextMenu","groupClickMenu","headerContextMenu","loadMenuTableColumnEvent","headerClickMenu","headerMenu","initializeColumnHeaderMenu","contextMenu","loadMenuTableCellEvent","clickMenu","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","mousemove","which","startMove","bindTouchEvents","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","moveToCol","_bindMouseMove","movingCells","_unbindMouseMove","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","connectionTables","commsConnections","dropEvent","elementRowDrop","tabulatorElementDropEvent","sender","movableRowsSender","senders","movableRowsReceiver","receivers","connect","disconnect","dropComplete","fromTable","toTable","Mutator","enabled","transformCell","mutateLink","lookupMutator","mutators","mutatorEdit","linkCell","pageSize","currentRow","currentPage","totalRows","totalPages","showingEl","valueEl","ofEl","totalEl","rowsEl","pages","Page","progressiveLoad","pageCounterElement","pageCounter","page","remoteRowCountEstimate","initialLoad","dataChanging","pageSizes","setMaxPage","setPage","userSetPageToRow","userSetPageSize","getPageSize","previousPage","nextPage","getPage","getPageMax","setPageToRow","initialLoadComplete","calculatePageSizes","footerRedraw","paginationAddRow","rowAddingPosition","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePageCounter","initializePaginator","initializeProgressive","scrollVertical","dispRows","testElRow","testElCell","paginationSize","generatePageSizeSelectList","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","counter","paginationCounter","pageCounters","hidden","pageSelectLabel","paginationCounterHolder","paginationElement","paginationCounterElement","footerAppend","paginationInitialPage","paginationButtonCount","trigger","leftSize","rightSize","_generatePageButton","actualStartRow","actualRowPageSize","actualRows","setMaxRows","_setPageButtons","_setPageCounter","last_page","last_row","progressiveLoadDelay","footer","defaultPageCounters","local","id","localStorage","getItem","cookie","cookiePos","setItem","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","testKey","removeItem","persistence","retreivedData","persistenceMode","persistenceID","localStorageTest","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retreiveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","current","oldCols","newCols","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","excludedKeys","defStore","colDef","defaultReaders","defaultWriters","rowContextPopup","loadPopupEvent","rowClickPopup","groupContextPopup","groupClickPopup","headerContextPopup","loadPopupTableColumnEvent","headerClickPopup","headerPopup","initializeColumnHeaderPopup","contextPopup","loadPopupTableCellEvent","clickPopup","headerPopupEl","headerPopupIcon","loadPopup","contentsEl","renderCallback","Print","manualBlock","printAsHtml","replaceTable","cleanup","printFullscreen","genereateTable","printConfig","printStyled","printRowRange","footerContent","scrollX","scrollY","footerEl","tableEl","printHeader","printFooter","printFormatter","scrollTo","ReactiveData","origFuncs","currentVersion","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","getRowFromDataObject","pop","startRow","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","ResizeColumns","startColumn","startWidth","latestX","initialNextColumn","layoutColumnHeader","layoutCellHandles","deInitializeComponent","resizeHandle","columnLayoutUpdated","deInitializeColumn","resizable","initializeEventWatchers","reinitializeColumn","handleEl","nearestColumn","_checkResizability","handleDown","_mouseDown","oldWidth","parentElement","mouseMove","blockedBefore","blockedAfter","startDiff","moveDiff","resizableColumnFit","checkCellHeights","mouseUp","ResizeRows","startHeight","prevHandle","prevHandleDown","screenY","ResizeTable","observer","containerObserver","tableHeight","containerWidth","autoResize","tableStyle","ResizeObserver","entry","nodeHeight","contentRect","nodeWidth","observe","tableResized","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","order","generateCollapsedContent","generateCollapsedRowContent","colCount","working","getFlexBaseWidth","hideColumn","showColumn","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","node_content","titleData","valueData","titleHighlight","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectable","clearSelectionData","rowRetrieve","selectablePersistence","_deselectRow","_rowSelectionChanged","endSelect","selectableCheck","getCurrentCell","_clearSelection","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","_selectRow","rowMatch","rowInfo","selectableRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","string","langLocale","localeCompare","time","array","calc","d","alphanum","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortElement","columnHeaderSortMulti","newSortList","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","findSorter","setColumnHeader","_sortItems","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","el1","el2","defaultSorters","Tooltip","tooltipSubscriber","headerSubscriber","timeout","popupInstance","tooltipGenerationMode","headerTooltip","mousemoveCheck","mouseoutCheck","tooltip","clearPopup","loadTooltip","tooltipDelay","parameters","numeric","starts","ends","minLength","maxLength","regex","unique","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/dist/js/tabulator_esm.js b/dist/js/tabulator_esm.js index 9057ef1df..5a8e14c2a 100644 --- a/dist/js/tabulator_esm.js +++ b/dist/js/tabulator_esm.js @@ -1,4 +1,4 @@ -/* Tabulator v5.1.7 (c) Oliver Folkerd 2022 */ +/* Tabulator v5.2.2 (c) Oliver Folkerd 2022 */ class CoreFeature{ constructor(table){ @@ -125,6 +125,303 @@ class CoreFeature{ } } +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 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.renderedCallback = null; + + this.visible = false; + + this.element.classList.add("tabulator-popup-container"); + + this.blurEvent = this.hide.bind(this, false); + this.escEvent = this._escapeCheck.bind(this); + } + + _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; + } + + return {x, y, offset}; + } + + show(origin, position){ + var x, y, parentEl, parentOffset, coords; + + 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; + + 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(() => { + 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); + window.addEventListener("resize", this.blurEvent); + document.body.addEventListener("keydown", this.escEvent); + }, 100); + + this.blurCallback = callback; + } + + return this; + } + + _escapeCheck(e){ + if(e.keyCode == 27){ + this.hide(); + } + } + + hide(silent = false){ + if(this.visible){ + if(this.blurable){ + document.body.removeEventListener("keydown", this.escEvent); + document.body.removeEventListener("click", this.blurEvent); + document.body.removeEventListener("contextmenu", this.blurEvent); + window.removeEventListener("resize", this.blurEvent); + this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); + this.unsubscribe("cell-editing", this.blurEvent); + } + + 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(); + } + } + + 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){ @@ -151,12 +448,16 @@ class Module extends CoreFeature{ } /////////////////////////////////// - /// Public Function Registation /// + /// Public Function Registration /// /////////////////////////////////// registerTableFunction(name, func){ if(typeof this.table[name] === "undefined"){ - this.table[name] = func; + this.table[name] = (...args) => { + this.table.initGuard(name); + + return func(...args); + }; }else { console.warn("Unable to bind table function, name already in use", name); } @@ -189,54 +490,43 @@ class Module extends CoreFeature{ this.table.rowManager.refreshActiveData(handler, false, renderInPosition); } } -} - -class Helpers{ - - static elVisible(el){ - return !(el.offsetWidth <= 0 && el.offsetHeight <= 0); - } - static elOffset(el){ - var box = el.getBoundingClientRect(); + /////////////////////////////////// + //////// Footer Management //////// + /////////////////////////////////// - return { - top: box.top + window.pageYOffset - document.documentElement.clientTop, - left: box.left + window.pageXOffset - document.documentElement.clientLeft - }; + footerAppend(element){ + return this.table.footerManager.append(element) } - 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; + footerPrepend(element){ + return this.table.footerManager.prepend(element) + } - if(subject != null && typeof subject === "object" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){ - match = list.findIndex((item) => { - return item.subject === subject; - }); + footerRemove(element){ + return this.table.footerManager.remove(element) + } - if(match > -1){ - clone[i] = list[match].copy; - }else { - copy = Object.assign(Array.isArray(subject) ? [] : {}, subject); + /////////////////////////////////// + //////// Popups Management //////// + /////////////////////////////////// + + popup(menuEl, menuContainer){ + return new Popup(this.table, menuEl, menuContainer); + } - list.unshift({subject, copy}); + /////////////////////////////////// + //////// Alert Management //////// + /////////////////////////////////// - clone[i] = this.deepClone(subject, copy, list); - } - } - } + alert(content, type){ + return this.table.alertManager.alert(content, type); + } - return clone; + clearAlert(){ + return this.table.alertManager.clear(); } + } var defautlAccessors = {}; @@ -386,7 +676,7 @@ function serializeParams(params){ return encoded.join("&"); } -function defaultURLGenerator(url, config, params){ +function urlBuilder(url, config, params){ if(url){ if(params && Object.keys(params).length){ if(!config.method || config.method.toLowerCase() == "get"){ @@ -666,7 +956,7 @@ Ajax.moduleName = "ajax"; //load defaults Ajax.defaultConfig = defaultConfig; -Ajax.defaultURLGenerator = defaultURLGenerator; +Ajax.defaultURLGenerator = urlBuilder; Ajax.defaultLoaderPromise = defaultLoaderPromise; Ajax.contentTypeFormatters = defaultContentTypeFormatters; @@ -1241,13 +1531,6 @@ class Cell extends CoreFeature{ }); } - //update tooltip on mouse enter - if (this.table.options.tooltipGenerationMode === "hover"){ - element.addEventListener("mouseenter", (e) => { - this._generateTooltip(); - }); - } - this.dispatch("cell-init", this); //hide cell if not visible @@ -1293,31 +1576,6 @@ class Cell extends CoreFeature{ this.dispatch("cell-rendered", this); } - //generate tooltip text - _generateTooltip(){ - var tooltip = this.column.tooltip; - - if(tooltip){ - if(tooltip === true){ - tooltip = this.value; - }else if(typeof(tooltip) == "function"){ - tooltip = tooltip(this.getComponent()); - - if(tooltip === false){ - tooltip = ""; - } - } - - if(typeof tooltip === "undefined"){ - tooltip = ""; - } - - this.element.setAttribute("title", tooltip); - }else { - this.element.setAttribute("title", ""); - } - } - //////////////////// Getters //////////////////// getElement(containerOnly){ if(!this.loaded){ @@ -1339,8 +1597,8 @@ class Cell extends CoreFeature{ } //////////////////// Actions //////////////////// - setValue(value, mutate){ - var changed = this.setValueProcessData(value, mutate); + setValue(value, mutate, force){ + var changed = this.setValueProcessData(value, mutate, force); if(changed){ this.dispatch("cell-value-updated", this); @@ -1359,10 +1617,10 @@ class Cell extends CoreFeature{ } } - setValueProcessData(value, mutate){ + setValueProcessData(value, mutate, force){ var changed = false; - if(this.value !== value){ + if(this.value !== value || force){ changed = true; @@ -1398,7 +1656,6 @@ class Cell extends CoreFeature{ layoutElement(){ this._generateContents(); - this._generateTooltip(); this.dispatch("cell-layout", this); } @@ -1435,11 +1692,15 @@ class Cell extends CoreFeature{ 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.element.style.height = this.row.heightStyled; + + this.dispatch("cell-height", this, this.row.heightStyled); } getHeight(){ @@ -1644,10 +1905,8 @@ var defaultColumnOptions = { "minWidth": 40, "maxWidth": undefined, "maxInitialWidth": undefined, - "tooltip": undefined, "cssClass": undefined, "variableHeight": undefined, - "headerTooltip": undefined, "headerVertical": undefined, "headerHozAlign": undefined, "editableTitle": undefined, @@ -1669,7 +1928,6 @@ class Column extends CoreFeature{ this.titleElement = false; this.groupElement = this.createGroupElement(); //column group holder element this.isGroup = false; - this.tooltip = false; //hold column tooltip this.hozAlign = ""; //horizontal text alignment this.vertAlign = ""; //vert text alignment @@ -1794,39 +2052,6 @@ class Column extends CoreFeature{ //all previously deprecated functionality removed in the 5.0 release } - setTooltip(){ - var def = this.definition; - - //set header tooltips - var tooltip = def.headerTooltip; - - if(tooltip){ - if(tooltip === true){ - if(def.field){ - this.langBind("columns|" + def.field, (value) => { - this.element.setAttribute("title", value || def.title); - }); - }else { - this.element.setAttribute("title", def.title); - } - - }else { - if(typeof(tooltip) == "function"){ - tooltip = tooltip(this.getComponent()); - - if(tooltip === false){ - tooltip = ""; - } - } - - this.element.setAttribute("title", tooltip); - } - - }else { - this.element.setAttribute("title", ""); - } - } - //build header element _initialize(){ var def = this.definition; @@ -1853,14 +2078,7 @@ class Column extends CoreFeature{ this._buildColumnHeader(); } - this.setTooltip(); - this.dispatch("column-init", this); - - //update header tooltip on mouse enter - this.element.addEventListener("mouseenter", (e) => { - this.setTooltip(); - }); } _bindEvents(){ @@ -1981,9 +2199,6 @@ class Column extends CoreFeature{ this.reinitializeWidth(); - //set tooltip if present - this.tooltip = this.definition.tooltip; - //set orizontal text alignment this.hozAlign = this.definition.hozAlign; this.vertAlign = this.definition.vertAlign; @@ -2158,6 +2373,8 @@ class Column extends CoreFeature{ 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"); } @@ -2172,6 +2389,8 @@ class Column extends CoreFeature{ 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"; } @@ -2200,6 +2419,8 @@ class Column extends CoreFeature{ this.columns.forEach(function(column){ column.clearVerticalAlign(); }); + + this.dispatch("column-height", this, ""); } bindModuleColumns (){ @@ -2548,6 +2769,8 @@ class Column extends CoreFeature{ if(this.titleFormatterRendered){ this.titleFormatterRendered(); } + + this.dispatch("column-rendered", this); } //////////////// Cell Management ///////////////// @@ -2776,7 +2999,7 @@ class RowComponent$1 { class Row extends CoreFeature{ constructor (data, parent, type = "row"){ super(parent.table); - + this.parent = parent; this.data = {}; this.type = type; //type of element @@ -2786,247 +3009,256 @@ class Row extends CoreFeature{ this.height = 0; //hold element height this.heightStyled = ""; //hold element height prestyled to improve render efficiency this.manualHeight = false; //user has manually set row height - this.outerHeight = 0; //holde lements outer 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.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){ 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); - + 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); } } - + 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 = 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); + minHeight; + + if(this.table.options.rowHeight){ + this.height = this.table.options.rowHeight; }else { - this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight); + 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){ + 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 (var attrname in newRowData) { this.data[attrname] = newRowData[attrname]; } - + this.dispatch("row-data-save-after", this); - + //update affected cells only for (var 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(); } @@ -3034,11 +3266,11 @@ class Row extends CoreFeature{ } }); } - + //Partial reinitialization if visible if(visible){ this.normalizeHeight(true); - + if(this.table.options.rowFormatter){ this.table.options.rowFormatter(this.getComponent()); } @@ -3047,78 +3279,78 @@ class Row extends CoreFeature{ 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.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.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); @@ -3126,70 +3358,70 @@ class Row extends CoreFeature{ console.warn("Move Error - No matching row found:", to); } } - + ///////////////////// Actions ///////////////////// delete(){ this.dispatch("row-delete", this); - + this.deleteActual(); - + return Promise.resolve(); } - + deleteActual(blockRedraw){ var index = this.table.rowManager.getRowIndex(this); - + this.detatchModules(); - + this.table.rowManager.deleteRow(this, blockRedraw); - + this.deleteCells(); - + this.initialized = false; this.heightInitialized = false; this.element = false; - + this.dispatch("row-deleted", this); } - + detatchModules(){ this.dispatch("row-deleting", this); } - + deleteCells(){ var cellCount = this.cells.length; - + for(let i = 0; i < cellCount; i++){ this.cells[0].delete(); } } - + wipe(){ this.detatchModules(); 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 = {}; } - + getGroup(){ return this.modules.group || false; } - + //////////////// Object Generation ///////////////// getComponent(){ if(!this.component){ this.component = new RowComponent$1(this); } - + return this.component; } } @@ -3485,7 +3717,7 @@ class ColumnCalcs extends Module{ if(this.botInitialized){ this.botInitialized = false; - this.table.footerManager.remove(this.botElement); + this.footerRemove(this.botElement); changed = true; } @@ -3503,7 +3735,7 @@ class ColumnCalcs extends Module{ initializeBottomRow(){ if(!this.botInitialized){ - this.table.footerManager.prepend(this.botElement); + this.footerPrepend(this.botElement); this.botInitialized = true; } } @@ -4966,6 +5198,10 @@ function input(cell, onRendered, success, cancel, editorParams){ onRendered(function(){ input.focus({preventScroll: true}); input.style.height = "100%"; + + if(editorParams.selectContents){ + input.select(); + } }); function onChange(e){ @@ -5046,6 +5282,10 @@ function textarea(cell, onRendered, success, cancel, editorParams){ input.scrollHeight; input.style.height = input.scrollHeight + "px"; cell.getRow().normalizeHeight(); + + if(editorParams.selectContents){ + input.select(); + } }); function onChange(e){ @@ -5169,6 +5409,10 @@ function number(cell, onRendered, success, cancel, editorParams){ //submit new value on blur input.addEventListener("blur", blurFunc); + + if(editorParams.selectContents){ + input.select(); + } }); function onChange(){ @@ -5301,1040 +5545,1024 @@ function range(cell, onRendered, success, cancel, editorParams){ return input; } -//dropdown select editor -function select(cell, onRendered, success, cancel, editorParams){ - var self = this, - cellEl = cell.getElement(), - initialValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : []), - input = document.createElement("input"), - listEl = document.createElement("div"), - multiselect = editorParams.multiselect, - dataItems = [], - currentItem = {}, - displayItems = [], - currentItems = [], - blurable = true, - blockListShow = false, - searchWord = "", - searchWordTimeout = null; - - if(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === "object" && !editorParams.values)){ - console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"); - editorParams = {values:editorParams}; - } - - function getUniqueColumnValues(field){ - var output = {}, - data = self.table.getData(), - column; - - if(field){ - column = self.table.columnManager.getColumnByField(field); - }else { - column = cell.getColumn()._getSelf(); - } - - if(column){ - data.forEach(function(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); - } - - return Object.keys(output); - } - - function parseItems(inputValues, curentValues){ - var dataList = []; - var displayList = []; - - function processComplexListItem(item){ - var item = { - label:item.label, - value:item.value, - itemParams:item.itemParams, - elementAttributes: item.elementAttributes, - element:false, - }; - - // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){ - // setCurrentItem(item); - // } - - if(curentValues.indexOf(item.value) > -1){ - setItem(item); - } - - dataList.push(item); - displayList.push(item); - - return item; - } - - if(typeof inputValues == "function"){ - inputValues = inputValues(cell); - } - - if(Array.isArray(inputValues)){ - inputValues.forEach(function(value){ - var item; - - if(typeof value === "object"){ - - if(value.options){ - item = { - label:value.label, - group:true, - itemParams:value.itemParams, - elementAttributes:value.elementAttributes, - element:false, - }; - - displayList.push(item); - - value.options.forEach(function(item){ - processComplexListItem(item); - }); - }else { - processComplexListItem(value); - } - - }else { - - item = { - label:value, - value:value, - element:false, - }; - - // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){ - // setCurrentItem(item); - // } - - if(curentValues.indexOf(item.value) > -1){ - setItem(item); - } - - dataList.push(item); - displayList.push(item); - } - }); - }else { - for(var key in inputValues){ - var item = { - label:inputValues[key], - value:key, - element:false, - }; - - // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){ - // setCurrentItem(item); - // } - - if(curentValues.indexOf(item.value) > -1){ - setItem(item); - } - - dataList.push(item); - displayList.push(item); - } - } - - if(editorParams.sortValuesList){ - dataList.sort((a, b) => { - return a.label < b.label ? -1 : (a.label > b.label ? 1 : 0); - }); - - displayList.sort((a, b) => { - return a.label < b.label ? -1 : (a.label > b.label ? 1 : 0); - }); - - if(editorParams.sortValuesList !== "asc"){ - dataList.reverse(); - displayList.reverse(); - } - } - - dataItems = dataList; - displayItems = displayList; - - fillList(); - } - - function fillList(){ - while(listEl.firstChild) listEl.removeChild(listEl.firstChild); - - displayItems.forEach(function(item){ - - var el = item.element; - - if(!el){ - el = document.createElement("div"); - item.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label; - if(item.group){ - el.classList.add("tabulator-edit-select-list-group"); - el.tabIndex = 0; - el.innerHTML = item.label === "" ? " " : item.label; - }else { - el.classList.add("tabulator-edit-select-list-item"); - el.tabIndex = 0; - el.innerHTML = item.label === "" ? " " : item.label; - - el.addEventListener("click", function(){ - blockListShow = true; - - setTimeout(() => { - blockListShow = false; - }, 10); - - // setCurrentItem(item); - // chooseItem(); - if(multiselect){ - toggleItem(item); - input.focus(); - }else { - chooseItem(item); - } - - }); - - // if(item === currentItem){ - // el.classList.add("active"); - // } - - if(currentItems.indexOf(item) > -1){ - el.classList.add("active"); - } - } - - if(item.elementAttributes && typeof item.elementAttributes == "object"){ - for (let key in item.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - el.setAttribute(key, input.getAttribute(key) + item.elementAttributes["+" + key]); - }else { - el.setAttribute(key, item.elementAttributes[key]); - } - } - } - el.addEventListener("mousedown", function(){ - blurable = false; - - setTimeout(function(){ - blurable = true; - }, 10); - }); - - item.element = el; - - - } - - listEl.appendChild(el); - }); - } - - - function setCurrentItem(item, active){ - - if(!multiselect && currentItem && currentItem.element){ - currentItem.element.classList.remove("active"); - } - - if(currentItem && currentItem.element){ - currentItem.element.classList.remove("focused"); - } - - currentItem = item; - - if(item.element){ - item.element.classList.add("focused"); - if(active){ - item.element.classList.add("active"); - } - } - - if(item && item.element && item.element.scrollIntoView){ - item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'}); - } - } - - - // function chooseItem(){ - // hideList(); - - // if(initialValue !== currentItem.value){ - // initialValue = currentItem.value; - // success(currentItem.value); - // }else{ - // cancel(); - // } - // } - - function setItem(item) { - var index = currentItems.indexOf(item); - - if(index == -1){ - currentItems.push(item); - setCurrentItem(item, true); - } - - fillInput(); - } - - function unsetItem(index) { - var item = currentItems[index]; - - if(index > -1){ - currentItems.splice(index, 1); - if(item.element){ - item.element.classList.remove("active"); - } - } - } - - function toggleItem(item) { - if(!item){ - item = currentItem; - } - - var index = currentItems.indexOf(item); - - if(index > -1){ - unsetItem(index); - }else { - if(multiselect !== true && currentItems.length >= multiselect){ - unsetItem(0); - } - - setItem(item); - } - - fillInput(); - - } - - function chooseItem(item){ - hideList(); - - if(!item){ - item = currentItem; - } - - if(item){ - input.value = item.label; - success(item.value); - } - - initialDisplayValue = [item.value]; - } - - - function chooseItems(silent){ - if(!silent){ - hideList(); - } - - var output = []; - - currentItems.forEach((item) => { - output.push(item.value); - }); - - initialDisplayValue = output; - - success(output); - } - - function fillInput(){ - var output = []; - - currentItems.forEach((item) => { - output.push(item.label); - }); - - input.value = output.join(", "); - - if(self.currentCell === false){ - chooseItems(true); - } - } - - - function unsetItems() { - - var len = currentItems.length; - - for(let i = 0; i < len; i++){ - unsetItem(0); - } - } - - function cancelItem(){ - hideList(); - cancel(); - } - - function showList(){ - currentItems = []; - - if(!listEl.parentNode){ - if(editorParams.values === true){ - parseItems(getUniqueColumnValues(), initialDisplayValue); - }else if(typeof editorParams.values === "string"){ - parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue); - }else { - parseItems(editorParams.values || [], initialDisplayValue); - } - - - var offset = Helpers.elOffset(cellEl); - - listEl.style.minWidth = cellEl.offsetWidth + "px"; - - listEl.style.top = (offset.top + cellEl.offsetHeight) + "px"; - listEl.style.left = offset.left + "px"; - - - listEl.addEventListener("mousedown", function(e){ - blurable = false; - - setTimeout(function(){ - blurable = true; - }, 10); - }); - - document.body.appendChild(listEl); - } - } - - function hideList(){ - if(listEl.parentNode){ - listEl.parentNode.removeChild(listEl); - } - - removeScrollListener(); - } - - function removeScrollListener() { - self.table.rowManager.element.removeEventListener("scroll", cancelItem); - } - - function scrollTovalue(char){ - - clearTimeout(searchWordTimeout); - - var character = String.fromCharCode(event.keyCode).toLowerCase(); - searchWord += character.toLowerCase(); - - var match = dataItems.find((item) => { - return typeof item.label !== "undefined" && item.label.toLowerCase().startsWith(searchWord); - }); - - if(match){ - setCurrentItem(match, !multiselect); - } - - searchWordTimeout = setTimeout(() => { - searchWord = ""; - }, 800); - } - - //style input - input.setAttribute("type", "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - input.style.cursor = "default"; - input.readOnly = (this.currentCell != false); - - 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 initialValue !== "undefined" || initialValue === null ? initialValue : ""; - - // if(editorParams.values === true){ - // parseItems(getUniqueColumnValues(), initialValue); - // }else if(typeof editorParams.values === "string"){ - // parseItems(getUniqueColumnValues(editorParams.values), initialValue); - // }else{ - // parseItems(editorParams.values || [], initialValue); - // } - - input.addEventListener("search", function(e){ - if(!input.value){ - unsetItems(); - chooseItems(); - } - }); - - //allow key based navigation - input.addEventListener("keydown", function(e){ - var index; - - switch(e.keyCode){ - case 38: //up arrow - index = dataItems.indexOf(currentItem); - - if(vertNav == "editor" || (vertNav == "hybrid" && index)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index > 0){ - setCurrentItem(dataItems[index - 1], !multiselect); - } - } - break; - - case 40: //down arrow - index = dataItems.indexOf(currentItem); - - if(vertNav == "editor" || (vertNav == "hybrid" && index < dataItems.length - 1)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index < dataItems.length - 1){ - if(index == -1){ - setCurrentItem(dataItems[0], !multiselect); - }else { - setCurrentItem(dataItems[index + 1], !multiselect); - } - } - } - break; - - case 37: //left arrow - case 39: //right arrow - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - break; - - case 13: //enter - // chooseItem(); - - if(multiselect){ - toggleItem(); - }else { - chooseItem(); - } - - break; - - case 27: //escape - cancelItem(); - break; - - case 9: //tab - break; - - default: - if(self.currentCell === false){ - e.preventDefault(); - } - - if(e.keyCode >= 38 && e.keyCode <= 90){ - scrollTovalue(e.keyCode); - } - } - }); - - input.addEventListener("blur", function(e){ - if(blurable){ - if(multiselect){ - chooseItems(); - }else { - cancelItem(); - } - } - }); - - input.addEventListener("focus", function(e){ - if(!blockListShow){ - showList(); - } - }); - - //style list element - listEl = document.createElement("div"); - listEl.classList.add("tabulator-edit-select-list"); - - onRendered(function(){ - input.style.height = "100%"; - input.focus({preventScroll: true}); - }); - - setTimeout(() => { - this.table.rowManager.element.addEventListener("scroll", cancelItem); - }, 10); - - return input; -} - -//autocomplete -function autocomplete(cell, onRendered, success, cancel, editorParams){ - var self = this, - cellEl = cell.getElement(), - initialValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : ""), - input = document.createElement("input"), - listEl = document.createElement("div"), - displayItems = [], - currentItem = false, - blurable = true, - uniqueColumnValues = false; - - //style input - input.setAttribute("type", "search"); - - 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]); - } - } - } - - //style list element - listEl.classList.add("tabulator-edit-select-list"); - - listEl.addEventListener("mousedown", function(e){ - blurable = false; - - setTimeout(function(){ - blurable = true; - }, 10); - }); - - - function genUniqueColumnValues(){ - if(editorParams.values === true){ - uniqueColumnValues = getUniqueColumnValues(); - }else if(typeof editorParams.values === "string"){ - uniqueColumnValues = getUniqueColumnValues(editorParams.values); - } - } - - function getUniqueColumnValues(field){ - var output = {}, - data = self.table.getData(), - column; - - if(field){ - column = self.table.columnManager.getColumnByField(field); - }else { - column = cell.getColumn()._getSelf(); - } - - if(column){ - data.forEach(function(row){ - var val = column.getFieldValue(row); - - if(val !== null && typeof val !== "undefined" && val !== ""){ - output[val] = true; - } - }); - - if(editorParams.sortValuesList){ - if(editorParams.sortValuesList == "asc"){ - output = Object.keys(output).sort(); - }else { - output = Object.keys(output).sort().reverse(); - } - }else { - output = Object.keys(output); - } - }else { - console.warn("unable to find matching column to create autocomplete lookup list:", field); - } - - - return output; - } - - function filterList(term, intialLoad){ - var matches = [], - values, items; - - //lookup base values list - if(uniqueColumnValues){ - values = uniqueColumnValues; - }else { - values = editorParams.values || []; - } - - if(editorParams.searchFunc){ - matches = editorParams.searchFunc(term, values); - - if(matches instanceof Promise){ - - addNotice(typeof editorParams.searchingPlaceholder !== "undefined" ? editorParams.searchingPlaceholder : "Searching..."); - - matches.then((result) => { - fillListIfNotEmpty(parseItems(result), intialLoad); - }).catch((err) => { - console.err("error in autocomplete search promise:", err); - }); - - }else { - fillListIfNotEmpty(parseItems(matches), intialLoad); - } - }else { - items = parseItems(values); - - if(term === ""){ - if(editorParams.showListOnEmpty){ - matches = items; - } - }else { - items.forEach(function(item){ - if(item.value !== null || typeof item.value !== "undefined"){ - if(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){ - matches.push(item); - } - } - }); - } - - fillListIfNotEmpty(matches, intialLoad); - } - } - - function addNotice(notice){ - var searchEl = document.createElement("div"); - - clearList(); - - if(notice !== false){ - searchEl.classList.add("tabulator-edit-select-list-notice"); - searchEl.tabIndex = 0; - - if(notice instanceof Node){ - searchEl.appendChild(notice); - }else { - searchEl.innerHTML = notice; - } - - listEl.appendChild(searchEl); - } - } - - function parseItems(inputValues){ - var itemList = []; - - if(Array.isArray(inputValues)){ - inputValues.forEach(function(value){ - - var item = {}; - - if(typeof value === "object"){ - item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label; - item.value = value.value; - }else { - item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value; - item.value = value; - } - - itemList.push(item); - }); - }else { - for(var key in inputValues){ - var item = { - title:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key], - value:key, - }; - - itemList.push(item); - } - } - - return itemList; - } - - function clearList(){ - while(listEl.firstChild) listEl.removeChild(listEl.firstChild); - } - - function fillListIfNotEmpty(items, intialLoad){ - if(items.length){ - fillList(items, intialLoad); - }else { - if(editorParams.emptyPlaceholder){ - addNotice(editorParams.emptyPlaceholder); - } - } - } - - function fillList(items, intialLoad){ - var current = false; - - clearList(); - - displayItems = items; - - displayItems.forEach(function(item){ - var el = item.element; - - if(!el){ - el = document.createElement("div"); - el.classList.add("tabulator-edit-select-list-item"); - el.tabIndex = 0; - el.innerHTML = item.title; - - el.addEventListener("click", function(e){ - setCurrentItem(item); - chooseItem(); - }); - - el.addEventListener("mousedown", function(e){ - blurable = false; - - setTimeout(function(){ - blurable = true; - }, 10); - }); - - item.element = el; - - if(intialLoad && item.value == initialValue){ - input.value = item.title; - item.element.classList.add("active"); - current = true; - } - - if(item === currentItem){ - item.element.classList.add("active"); - current = true; - } - } - - listEl.appendChild(el); - }); - - if(!current){ - setCurrentItem(false); - } - } - - function chooseItem(){ - hideList(); - - if(currentItem){ - if(initialValue !== currentItem.value){ - initialValue = currentItem.value; - input.value = currentItem.title; - success(currentItem.value); - }else { - cancel(); - } - }else { - if(editorParams.freetext){ - initialValue = input.value; - success(input.value); - }else { - if(editorParams.allowEmpty && input.value === ""){ - initialValue = input.value; - success(input.value); - }else { - cancel(); - } - } - } - } - - function showList(){ - if(!listEl.parentNode){ - while(listEl.firstChild) listEl.removeChild(listEl.firstChild); - - var offset = Helpers.elOffset(cellEl); - - listEl.style.minWidth = cellEl.offsetWidth + "px"; - - listEl.style.top = (offset.top + cellEl.offsetHeight) + "px"; - listEl.style.left = offset.left + "px"; - document.body.appendChild(listEl); - } - } - - function setCurrentItem(item, showInputValue){ - if(currentItem && currentItem.element){ - currentItem.element.classList.remove("active"); - } - - currentItem = item; - - if(item && item.element){ - item.element.classList.add("active"); - } - - if(item && item.element && item.element.scrollIntoView){ - item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'}); - } - } - - function hideList(){ - if(listEl.parentNode){ - listEl.parentNode.removeChild(listEl); - } - - removeScrollListener(); - } - - - function cancelItem(){ - hideList(); - cancel(); - } - - function removeScrollListener() { - self.table.rowManager.element.removeEventListener("scroll", cancelItem); - } - - //allow key based navigation - input.addEventListener("keydown", function(e){ - var index; - - switch(e.keyCode){ - case 38: //up arrow - index = displayItems.indexOf(currentItem); - - if(vertNav == "editor" || (vertNav == "hybrid" && index)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index > 0){ - setCurrentItem(displayItems[index - 1]); - }else { - setCurrentItem(false); - } - } - break; - - case 40: //down arrow - - index = displayItems.indexOf(currentItem); - - if(vertNav == "editor" || (vertNav == "hybrid" && index < displayItems.length - 1)){ - - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index < displayItems.length - 1){ - if(index == -1){ - setCurrentItem(displayItems[0]); - }else { - setCurrentItem(displayItems[index + 1]); - } - } - } - break; - - - case 37: //left arrow - case 39: //right arrow - e.stopImmediatePropagation(); - e.stopPropagation(); - // e.preventDefault(); - break; - - case 13: //enter - chooseItem(); - break; - - case 27: //escape - cancelItem(); - break; - - case 36: //home - case 35: //end - //prevent table navigation while using input element - e.stopImmediatePropagation(); - break; - } - }); - - input.addEventListener("keyup", function(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; +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._getSelf; + + this.filterTimeout = null; + this.filtered = false; + this.typing = false; + + this.values = []; + this.popup = null; + + this.listIteration = 0; + + this.blurable = true; + + this.actions = { + success:success, + cancel:cancel + }; + + this._deprecationCheck(); + this._initializeValue(); + + onRendered(this._onRendered.bind(this)); + } + + _deprecationCheck(){ + if(this.params.listItemFormatter){ + console.warn("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"); + } + + if(this.params.sortValuesList){ + console.warn("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"); + } + + if(this.params.searchFunc){ + console.warn("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"); + } + + if(this.params.searchingPlaceholder){ + console.warn("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.join(","); + this.headerFilterInitialListGen(); + } + } + + _onRendered(){ + var cellEl = this.cell.getElement(); + + function clickStop(e){ + e.stopPropagation(); + } + + this.input.style.height = "100%"; + this.input.focus({preventScroll: true}); + + + cellEl.addEventListener("click", clickStop); + + setTimeout(() => { + cellEl.removeEventListener("click", clickStop); + }, 1000); + } + + _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; - default: - filterList(input.value); - } + 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; - input.addEventListener("search", function(e){ - filterList(input.value); - }); + 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" || typeof 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 && this.popup){ + this.popup.hide(); + } + } + + _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 + 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); + } + } + + _preventBlur(){ + this.blurable = false; + + setTimeout(function(){ + this.blurable = true; + }, 10); + } + + ////////////////////////////////////// + //////// Keyboard Navigation ///////// + ////////////////////////////////////// + + _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){ + e.stopImmediatePropagation(); + e.stopPropagation(); + e.preventDefault(); + } + + _keyEnter(e){ + if(this.focusedItem){ + this._chooseItem(this.focusedItem); + }else { + this._cancel(); + } + } + + _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.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){ + 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 itteration = ++ 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(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 === itteration){ + return this._parseList(responseValues); + }else { + return Promise.reject(itteration); + } + }); + }else { + return Promise.resolve(this._parseList(values)) + } + } + + _addPlaceholder(contents){ + var placeholder = document.createElement("div"); + + if(typeof contents === "function"){ + contents = contents(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); + }); + + 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; + var 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){ + var term = String(term).toLowerCase(); + + if(label !== null || typeof label !== "undefined"){ + if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase(term).indexOf() > -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){ + this.popup.hideOnBlur(this._resolveValue.bind(this, true)); + } + } + } + + _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; + + 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 = this.initialValues[0]; + + 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; + } + } + +} + +function select(cell, onRendered, success, cancel, editorParams){ - input.addEventListener("blur", function(e){ - if(blurable){ - chooseItem(); - } - }); + console.warn("The select editor has been deprecated, please use the new list editor"); - input.addEventListener("focus", function(e){ - var value = initialDisplayValue; - genUniqueColumnValues(); - showList(); - input.value = value; - filterList(value, true); - }); + 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); - onRendered(function(){ - input.style.height = "100%"; - input.focus({preventScroll: true}); - }); + return list.input; +} + +function autocomplete(cell, onRendered, success, cancel, editorParams){ - if(editorParams.mask){ - maskInput(input, editorParams); - } + console.warn("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"); - setTimeout(() => { - this.table.rowManager.element.addEventListener("scroll", cancelItem); - }, 10); + editorParams.autocomplete = true; - genUniqueColumnValues(); - input.value = initialDisplayValue; - filterList(initialDisplayValue, true); + var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - return input; + return list.input; } //star rating @@ -6618,7 +6846,9 @@ function tickCross(cell, onRendered, success, cancel, editorParams){ input = document.createElement("input"), tristate = editorParams.tristate, indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue, - indetermState = false; + indetermState = false, + trueValueSet = Object.keys(editorParams).includes("trueValue"), + falseValueSet = Object.keys(editorParams).includes("falseValue"); input.setAttribute("type", "checkbox"); input.style.marginTop = "5px"; @@ -6648,13 +6878,23 @@ function tickCross(cell, onRendered, success, cancel, editorParams){ }); } - input.checked = value === true || value === "true" || value === "True" || value === 1; + input.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === "true" || value === "True" || value === 1); onRendered(function(){ input.focus(); }); function setValue(blur){ + var checkedValue = input.checked; + + if(trueValueSet && checkedValue){ + checkedValue = editorParams.trueValue; + }else if(falseValueSet && !checkedValue){ + checkedValue = editorParams.falseValue; + }else { + checkedValue = checkedValue; + } + if(tristate){ if(!blur){ if(input.checked && !indetermState){ @@ -6664,17 +6904,17 @@ function tickCross(cell, onRendered, success, cancel, editorParams){ return indetermValue; }else { indetermState = false; - return input.checked; + return checkedValue; } }else { if(indetermState){ return indetermValue; }else { - return input.checked; + return checkedValue; } } }else { - return input.checked; + return checkedValue; } } @@ -6706,13 +6946,14 @@ var defaultEditors = { number:number, range:range, select:select, + list:list, autocomplete:autocomplete, star:star, progress:progress, tickCross:tickCross, }; -class Edit extends Module{ +class Edit$1 extends Module{ constructor(table){ super(table); @@ -6723,7 +6964,7 @@ class Edit extends Module{ this.invalidEdit = false; this.editedCells = []; - this.editors = Edit.editors; + this.editors = Edit$1.editors; this.registerColumnOption("editable"); this.registerColumnOption("editor"); @@ -7112,13 +7353,7 @@ class Edit extends Module{ cellEl = cell.getElement(); - if(cancel){ - if(cell.column.modules.validate && this.table.modExists("validate")){ - this.table.modules.validate.cellValidate(cell); - } - }else { - cellEl.classList.remove("tabulator-validation-fail"); - } + this.dispatch("edit-editor-clear", cell, cancel); cellEl.classList.remove("tabulator-editing"); @@ -7251,14 +7486,10 @@ class Edit extends Module{ return; } - //handle successfull value change + //handle successful value change function success(value){ if(self.currentCell === cell){ - var valid = true; - - if(cell.column.modules.validate && self.table.modExists("validate") && self.table.options.validationMode != "manual"){ - valid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value); - } + var valid = self.chain("edit-success", [cell, value], true, true); if(valid === true || self.table.options.validationMode === "highlight"){ self.clearEditor(); @@ -7276,19 +7507,11 @@ class Edit extends Module{ cell.setValue(value, true); - if(valid !== true){ - element.classList.add("tabulator-validation-fail"); - self.table.externalEvents.dispatch("validationFailed", cell.getComponent(), value, valid); - return false; - } - - return true; + return valid === true; }else { self.invalidEdit = true; - element.classList.add("tabulator-validation-fail"); self.focusCellNoEvent(cell, true); rendered(); - self.table.externalEvents.dispatch("validationFailed", cell.getComponent(), value, valid); return false; } } @@ -7342,6 +7565,7 @@ class Edit extends Module{ 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; @@ -7408,9 +7632,7 @@ class Edit extends Module{ if(cell.modules.edit && cell.modules.edit.edited){ cell.modules.edit.edited = false; - if(cell.modules.validate){ - cell.modules.validate.invalid = false; - } + this.dispatch("edit-edited-clear", cell); } editIndex = this.editedCells.indexOf(cell); @@ -7421,10 +7643,10 @@ class Edit extends Module{ } } -Edit.moduleName = "edit"; +Edit$1.moduleName = "edit"; //load defaults -Edit.editors = defaultEditors; +Edit$1.editors = defaultEditors; class ExportRow{ constructor(type, columns, component, indent){ @@ -8422,11 +8644,12 @@ class Filter extends Module{ } self.headerFilters[field] = {value:value, func:filterFunc, type:type, params: {}}; - }else { delete self.headerFilters[field]; } + column.modules.filter.value = value; + filterChangeCheck = JSON.stringify(self.headerFilters); if(self.prevHeaderFilterChangeCheck !== filterChangeCheck){ @@ -8456,6 +8679,8 @@ class Filter extends Module{ field = column.getField(), filterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params; + column.modules.filter.value = initialValue; + //handle aborted edit function cancel(){} @@ -8678,7 +8903,7 @@ class Filter extends Module{ //programmatically get value of header filter getHeaderFilterValue(column){ if(column.modules.filter && column.modules.filter.headerElement){ - return column.modules.filter.headerElement.value; + return column.modules.filter.value; } else { console.warn("Column Filter Error - No header filter set on column:", column.getField()); } @@ -8975,7 +9200,7 @@ class Filter extends Module{ activeRowComponents = []; if(this.subscribedExternal("dataFiltering")){ - this.dispatchExternal("dataFiltering", this.getFilters()); + this.dispatchExternal("dataFiltering", this.getFilters(true)); } if(this.table.options.filterMode !== "remote" && (this.filterList.length || Object.keys(this.headerFilters).length)){ @@ -8996,7 +9221,7 @@ class Filter extends Module{ activeRowComponents.push(row.getComponent()); }); - this.dispatchExternal("dataFiltered", this.getFilters(), activeRowComponents); + this.dispatchExternal("dataFiltered", this.getFilters(true), activeRowComponents); } return activeRows; @@ -9085,10 +9310,12 @@ function money(cell, formatterParams, onRendered){ integer = number[0]; decimal = number.length > 1 ? decimalSym + number[1] : ""; - rgx = /(\d+)(\d{3})/; + if (formatterParams.thousand !== false) { + rgx = /(\d+)(\d{3})/; - while (rgx.test(integer)){ - integer = integer.replace(rgx, "$1" + thousandSym + "$2"); + while (rgx.test(integer)){ + integer = integer.replace(rgx, "$1" + thousandSym + "$2"); + } } return after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal; @@ -9102,9 +9329,19 @@ function link(cell, formatterParams, onRendered){ 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 = data[formatterParams.labelField]; + label = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data); } if(formatterParams.label){ @@ -9208,10 +9445,11 @@ function tickCross$1(cell, formatterParams, onRendered){ 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((truthy && value) || (value === true || value === "true" || value === "True" || value === 1 || value === "1")){ + 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 { @@ -9233,17 +9471,23 @@ function datetime(cell, formatterParams, onRendered){ var value = cell.getValue(); if(typeof DT != "undefined"){ - var newDatetime = inputFormat === "iso" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat); + var newDatetime; - if(newDatetime.isValid){ + 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.shiftTimezone(formatterParams.timezone); + newDatetime = newDatetime.setZone(formatterParams.timezone); } return newDatetime.toFormat(outputFormat); }else { - if(invalid === true || !value){ return value; }else if(typeof invalid === "function"){ @@ -9268,11 +9512,20 @@ function datetimediff (cell, formatterParams, onRendered) { var value = cell.getValue(); if(typeof DT != "undefined"){ - - var newDatetime = inputFormat === "iso" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat); + 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);else { + if(humanize){ + return newDatetime.diff(date, unit).toHuman() + (suffix ? " " + suffix : ""); + }else { return parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? " " + suffix : ""); } } else { @@ -9904,7 +10157,12 @@ class FrozenColumns extends Module{ this.subscribe("row-layout-after", this.layoutRow.bind(this)); this.subscribe("table-layout", this.layout.bind(this)); this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); + this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); this.subscribe("columns-loading", this.reset.bind(this)); + + this.subscribe("column-add", this.reinitializeColumns.bind(this)); + this.subscribe("column-delete", 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)); @@ -9921,6 +10179,14 @@ class FrozenColumns extends Module{ layoutCell(cell){ this.layoutElement(cell.element, cell.column); } + + reinitializeColumns(){ + this.reset(); + + this.table.columnManager.columnsByIndex.forEach((column) => { + this.initializeColumn(column); + }); + } //initialize specific column initializeColumn(column){ @@ -9948,7 +10214,6 @@ class FrozenColumns extends Module{ } 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"); } @@ -10108,11 +10373,24 @@ class FrozenColumns extends Module{ //layout columns appropriately layout(){ + var visibleRows = [], + otherRows = []; + if(this.active && !this.blocked){ //calculate row padding this.calcMargins(); - - this.table.rowManager.getDisplayRows().forEach((row) =>{ + + //calculate left columns + this.layoutColumnPosition(); + + visibleRows = this.table.rowManager.getVisibleRows(); + otherRows = this.table.rowManager.getDisplayRows().filter(row => !visibleRows.includes(row)); + + otherRows.forEach((row) =>{ + row.deinitialize(); + }); + + visibleRows.forEach((row) =>{ if(row.type === "row"){ this.layoutRow(row); } @@ -10120,12 +10398,12 @@ class FrozenColumns extends Module{ this.layoutCalcRows(); - //calculate left columns - this.layoutColumnPosition(true); + } } layoutRow(row){ + // console.trace("row") var rowEl = row.getElement(); rowEl.style.paddingLeft = this.leftMargin; @@ -11780,7 +12058,11 @@ class HtmlTableImport extends Module{ tableElementCheck(){ if(this.table.originalElement && this.table.originalElement.tagName === "TABLE"){ - this.parseTable(); + 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."); + } } } @@ -12820,69 +13102,44 @@ class Menu extends Module{ super(table); this.menuContainer = null; - this.menuElements = []; - this.blurEvent = this.hideMenu.bind(this); - this.escEvent = this.escMenu.bind(this); this.nestedMenuBlock = false; - this.positionReversedX = false; this.currentComponent = null; + this.rootPopup = null; this.columnSubscribers = {}; + this.registerTableOption("menuContainer", undefined); //deprecated + this.registerTableOption("rowContextMenu", false); this.registerTableOption("rowClickMenu", false); this.registerTableOption("groupContextMenu", false); this.registerTableOption("groupClickMenu", false); - this.registerTableOption("menuContainer", false); this.registerColumnOption("headerContextMenu"); this.registerColumnOption("headerClickMenu"); this.registerColumnOption("headerMenu"); + this.registerColumnOption("headerMenuIcon"); this.registerColumnOption("contextMenu"); this.registerColumnOption("clickMenu"); + } initialize(){ - this.lookupMenuContainer(); - + this.deprecationCheck(); this.initializeRowWatchers(); this.initializeGroupWatchers(); this.subscribe("column-init", this.initializeColumn.bind(this)); } - - lookupMenuContainer(){ - - this.menuContainer = this.table.options.menuContainer; - - if(typeof this.menuContainer === "string"){ - this.menuContainer = document.querySelector(this.menuContainer); - - if(!this.menuContainer){ - console.warn("Menu Error - no container element found matching selector:", this.table.options.menuContainer , "(defaulting to document body)"); - } - }else if (this.menuContainer === true){ - this.menuContainer = this.table.element; - } - - if(this.menuContainer && !this.checkMenuContainerIsParent(this.menuContainer)){ - this.menuContainer = false; - console.warn("Menu Error - container element does not contain this table:", this.table.options.menuContainer , "(defaulting to document body)"); - } - - if(!this.menuContainer){ - this.menuContainer = document.body; - } - } - - checkMenuContainerIsParent(container, element = this.table.element){ - if(container === element){ - return true; - }else { - return element.parentNode ? this.checkMenuContainerIsParent(container, element.parentNode) : false; + + deprecationCheck(){ + if(typeof this.table.options.menuContainer !== "undefined"){ + console.warn("Use of the menuContainer option is now deprecated. Please use the popupContainer option instead"); + + this.table.options.popupContainer = this.table.options.menuContainer; } - } + } initializeRowWatchers(){ if(this.table.options.rowContextMenu){ @@ -12939,11 +13196,25 @@ class Menu extends Module{ } initializeColumnHeaderMenu(column){ - var headerMenuEl; + var icon = column.definition.headerMenuIcon, + headerMenuEl; headerMenuEl = document.createElement("span"); - headerMenuEl.classList.add("tabulator-header-menu-button"); - headerMenuEl.innerHTML = "⋮"; + 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(); @@ -12982,15 +13253,16 @@ class Menu extends Module{ component = component._row; } - menu = typeof menu == "function" ? menu.call(this.table, component.getComponent(), e) : menu; + menu = typeof menu == "function" ? menu.call(this.table, e, component.getComponent()) : menu; this.loadMenu(e, component, menu); } - loadMenu(e, component, menu, parentEl){ - var touch = !(e instanceof MouseEvent); + loadMenu(e, component, menu, parentEl, parentPopup){ + var touch = !(e instanceof MouseEvent), + menuEl = document.createElement("div"), + popup; - var menuEl = document.createElement("div"); menuEl.classList.add("tabulator-menu"); if(!touch){ @@ -13005,7 +13277,7 @@ class Menu extends Module{ if(!parentEl){ if(this.nestedMenuBlock){ //abort if child menu already open - if(this.isOpen()){ + if(this.rootPopup){ return; } }else { @@ -13014,8 +13286,14 @@ class Menu extends Module{ }, 100); } - this.hideMenu(); - this.menuElements = []; + if(this.rootPopup){ + this.rootPopup.hide(); + } + + this.rootPopup = popup = this.popup(menuEl); + + }else { + popup = parentPopup.child(menuEl); } menu.forEach((item) => { @@ -13051,8 +13329,7 @@ class Menu extends Module{ if(item.menu && item.menu.length){ itemEl.addEventListener("click", (e) => { e.stopPropagation(); - this.hideOldSubMenus(menuEl); - this.loadMenu(e, component, item.menu, itemEl); + this.loadMenu(e, component, item.menu, itemEl, popup); }); }else { if(item.action){ @@ -13072,116 +13349,24 @@ class Menu extends Module{ }); menuEl.addEventListener("click", (e) => { - this.hideMenu(); + this.rootPopup.hide(); }); - this.menuElements.push(menuEl); - this.positionMenu(menuEl, parentEl, touch, e); - - this.currentComponent = component; - - this.dispatchExternal("menuOpened", component.getComponent()); - } - - hideOldSubMenus(menuEl){ - var index = this.menuElements.indexOf(menuEl); + popup.show(parentEl || e); - if(index > -1){ - for(let i = this.menuElements.length - 1; i > index; i--){ - var el = this.menuElements[i]; + if(popup === this.rootPopup){ + this.rootPopup.hideOnBlur(() => { + this.rootPopup = null; - if(el.parentNode){ - el.parentNode.removeChild(el); + if(this.currentComponent){ + this.dispatchExternal("menuClosed", this.currentComponent.getComponent()); + this.currentComponent = null; } - - this.menuElements.pop(); - } - } - } - - positionMenu(element, parentEl, touch, e){ - var x, y, parentOffset; - - if(!parentEl){ - x = touch ? e.touches[0].pageX : e.pageX; - y = touch ? e.touches[0].pageY : e.pageY; - - if(this.menuContainer !== document.body){ - parentOffset = Helpers.elOffset(this.menuContainer); - - x -= parentOffset.left; - y -= parentOffset.top; - } - - this.positionReversedX = false; - }else { - parentOffset = Helpers.elOffset(parentEl); - x = parentOffset.left + parentEl.offsetWidth; - y = parentOffset.top - 1; - } - - element.style.top = y + "px"; - element.style.left = x + "px"; - - setTimeout(() => { - this.table.rowManager.element.addEventListener("scroll", this.blurEvent); - document.body.addEventListener("click", this.blurEvent); - document.body.addEventListener("contextmenu", this.blurEvent); - window.addEventListener("resize", this.blurEvent); - document.body.addEventListener("keydown", this.escEvent); - }, 100); - - this.menuContainer.appendChild(element); - - //move menu to start on right edge if it is too close to the edge of the screen - if((x + element.offsetWidth) >= this.menuContainer.offsetWidth || this.positionReversedX){ - element.style.left = ""; - - if(parentEl){ - element.style.right = (this.menuContainer.offsetWidth - parentOffset.left) + "px"; - }else { - element.style.right = (this.menuContainer.offsetWidth - x) + "px"; - } - - this.positionReversedX = true; - } - - //move menu to start on bottom edge if it is too close to the edge of the screen - if((y + element.offsetHeight) > this.menuContainer.offsetHeight) { - if(parentEl){ - element.style.top = (parseInt(element.style.top) - element.offsetHeight + parentEl.offsetHeight + 1) + "px"; - }else { - element.style.top = (parseInt(element.style.top) - element.offsetHeight) + "px"; - } - } - } - - isOpen(){ - return !!this.menuElements.length; - } - - escMenu(e){ - if(e.keyCode == 27){ - this.hideMenu(); - } - } - - hideMenu(){ - this.menuElements.forEach((menuEl) => { - if(menuEl.parentNode){ - menuEl.parentNode.removeChild(menuEl); - } - }); - - document.body.removeEventListener("keydown", this.escEvent); - document.body.removeEventListener("click", this.blurEvent); - document.body.removeEventListener("contextmenu", this.blurEvent); - window.removeEventListener("resize", this.blurEvent); - this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); - - if(this.currentComponent){ - this.dispatchExternal("menuClosed", this.currentComponent.getComponent()); - this.currentComponent = null; + }); + + this.currentComponent = component; + + this.dispatchExternal("menuOpened", component.getComponent()); } } } @@ -14131,10 +14316,12 @@ class Mutator extends Module{ 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)); @@ -14238,6 +14425,24 @@ class Mutator extends Module{ 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; } @@ -14395,6 +14600,7 @@ class Page extends Module{ 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)); @@ -14475,6 +14681,8 @@ class Page extends Module{ this.table.rowManager.getTableElement().removeChild(testElRow); } + + this.dispatchExternal("pageSizeChanged", this.size); this.generatePageSizeSelectList(); } @@ -14769,12 +14977,12 @@ class Page extends Module{ } } }else { - this.table.footerManager.append(this.pageCounterElement); + this.footerAppend(this.pageCounterElement); } } - this.table.footerManager.append(this.element, this); + this.footerAppend(this.element); } this.page = this.table.options.paginationInitialPage; @@ -14886,9 +15094,10 @@ class Page extends Module{ if(size !== true){ size = parseInt(size); } - + if(size > 0){ this.size = size; + this.dispatchExternal("pageSizeChanged", size); } if(this.pageSizeSelect){ @@ -15701,12 +15910,202 @@ class Persistence extends Module{ Persistence.moduleName = "persistence"; -Persistence.moduleInitOrder = 1; +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("groupContextPopup", false); + this.registerTableOption("groupClickPopup", false); + + this.registerColumnOption("headerContextPopup"); + this.registerColumnOption("headerClickPopup"); + this.registerColumnOption("headerPopup"); + this.registerColumnOption("headerPopupIcon"); + this.registerColumnOption("contextPopup"); + this.registerColumnOption("clickPopup"); + + } + + initialize(){ + this.initializeRowWatchers(); + this.initializeGroupWatchers(); + + this.subscribe("column-init", this.initializeColumn.bind(this)); + } + + 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)); + } + } + + 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)); + } + } + + 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.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); + } + } + + 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){ + 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); + } + + loadPopup(e, component, contents, renderedCallback){ + 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); + } + + popup.show(e).hideOnBlur(() => { + this.dispatchExternal("popupClosed", component.getComponent()); + }); + + + + this.dispatchExternal("popupOpened", component.getComponent()); + } +} + +Popup$1.moduleName = "popup"; + class Print extends Module{ constructor(table){ @@ -16176,126 +16575,154 @@ class ResizeColumns extends Module{ this.startColumn = false; this.startX = false; this.startWidth = false; + this.latestX = false; this.handle = null; - this.prevHandle = null; + this.initialNextColumn = null; + this.nextColumn = null; + this.initialized = false; this.registerColumnOption("resizable", true); + this.registerTableOption("resizableColumnFit", false); } initialize(){ - // if(this.table.options.resizableColumns){ - this.subscribe("cell-layout", this.layoutCellHandles.bind(this)); - this.subscribe("column-init", this.layoutColumnHeader.bind(this)); - // } + 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-delete", this.deInitializeComponent.bind(this)); + this.subscribe("column-height", this.resizeHandle.bind(this)); + + this.initialized = true; + } } + layoutCellHandles(cell){ if(cell.row.type === "row"){ - this.initializeColumn("cell", cell.column, cell.element); + this.deInitializeComponent(cell); + this.initializeColumn("cell", cell, cell.column, cell.element); } } layoutColumnHeader(column){ - this.initializeColumn("header", column, column.element); + 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); + } + } + + reinitializeColumn(column){ + column.cells.forEach((cell) => { + if(cell.modules.resize && cell.modules.resize.handleEl){ + cell.element.after(cell.modules.resize.handleEl); + } + }); + + if(column.modules.resize && column.modules.resize.handleEl){ + column.element.after(column.modules.resize.handleEl); + } } - initializeColumn(type, column, element){ + initializeColumn(type, component, column, element){ var self = this, variableHeight = false, - mode = column.definition.resizable; + mode = column.definition.resizable, + config = {}, + nearestColumn = column.getLastColumn(); //set column resize mode if(type === "header"){ variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight; - column.modules.resize = {variableHeight:variableHeight}; + config = {variableHeight:variableHeight}; } - if(mode === true || mode == type){ + if((mode === true || mode == type) && this._checkResizability(nearestColumn)){ - var handle = document.createElement('div'); + var handle = document.createElement('span'); handle.className = "tabulator-col-resize-handle"; - - var prevHandle = document.createElement('div'); - prevHandle.className = "tabulator-col-resize-handle prev"; - handle.addEventListener("click", function(e){ e.stopPropagation(); }); var handleDown = function(e){ - var nearestColumn = column.getLastColumn(); - - if(nearestColumn && self._checkResizability(nearestColumn)){ - self.startColumn = column; - self._mouseDown(e, nearestColumn, handle); - } + self.startColumn = column; + self.initialNextColumn = self.nextColumn = nearestColumn.nextColumn(); + self._mouseDown(e, nearestColumn, handle); }; handle.addEventListener("mousedown", handleDown); handle.addEventListener("touchstart", handleDown, {passive: true}); - //reszie column on double click - handle.addEventListener("dblclick", function(e){ - var col = column.getLastColumn(), - oldWidth; + //resize column on double click + handle.addEventListener("dblclick", (e) => { + var oldWidth = nearestColumn.getWidth(); - if(col && self._checkResizability(col)){ - oldWidth = col.getWidth(); - - e.stopPropagation(); - col.reinitializeWidth(true); - - if(oldWidth !== col.getWidth()){ - self.dispatch("column-resized", col); - self.table.externalEvents.dispatch("columnResized", col.getComponent()); - } - } - }); - - - prevHandle.addEventListener("click", function(e){ e.stopPropagation(); - }); - - var prevHandleDown = function(e){ - var nearestColumn, colIndex, prevColumn; - - nearestColumn = column.getFirstColumn(); + nearestColumn.reinitializeWidth(true); - if(nearestColumn){ - colIndex = self.table.columnManager.findColumnIndex(nearestColumn); - prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false; - - if(prevColumn && self._checkResizability(prevColumn)){ - self.startColumn = column; - self._mouseDown(e, prevColumn, prevHandle); - } + if(oldWidth !== nearestColumn.getWidth()){ + self.dispatch("column-resized", nearestColumn); + self.table.externalEvents.dispatch("columnResized", nearestColumn.getComponent()); } - }; + }); - prevHandle.addEventListener("mousedown", prevHandleDown); - prevHandle.addEventListener("touchstart", prevHandleDown, {passive: true}); + config.handleEl = handle; - //resize column on double click - prevHandle.addEventListener("dblclick", function(e){ - var nearestColumn, colIndex, prevColumn; - - nearestColumn = column.getFirstColumn(); - - if(nearestColumn){ - colIndex = self.table.columnManager.findColumnIndex(nearestColumn); - prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false; - - if(prevColumn && self._checkResizability(prevColumn)){ - e.stopPropagation(); - prevColumn.reinitializeWidth(true); - } - } - }); + if(element.parentNode){ + 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; - element.appendChild(handle); - element.appendChild(prevHandle); + 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; } } @@ -16307,14 +16734,42 @@ class ResizeColumns extends Module{ var self = this; self.table.element.classList.add("tabulator-block-select"); - + function mouseMove(e){ - // self.table.columnManager.tempScrollBlock(); + 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){ - column.setWidth(self.startWidth - ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX)); - }else { - column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX)); + 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.renderer.rerenderColumns(true); @@ -16342,7 +16797,7 @@ class ResizeColumns extends Module{ handle.removeEventListener("touchend", mouseUp); self.table.element.classList.remove("tabulator-block-select"); - + if(self.startWidth !== column.getWidth()){ self.dispatch("column-resized", column); self.table.externalEvents.dispatch("columnResized", column.getComponent()); @@ -16357,6 +16812,7 @@ class ResizeColumns extends Module{ } 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); @@ -17461,8 +17917,21 @@ function datetime$1(a, b, aRow, bRow, column, dir, params){ emptyAlign = 0; if(typeof DT != "undefined"){ - a = format === "iso" ? DT.fromISO(String(a)) : DT.fromFormat(String(a), format); - b = format === "iso" ? DT.fromISO(String(b)) : DT.fromFormat(String(b), format); + if(DT.isDateTime(a)){ + a = a; + }else if(format === "iso"){ + a = DT.fromISO(String(a)); + }else { + a = DT.fromFormat(String(a), format); + } + + if(DT.isDateTime(b)){ + b = b; + }else if(format === "iso"){ + b = DT.fromISO(String(b)); + }else { + b = DT.fromFormat(String(b), format); + } if(!a.isValid){ emptyAlign = !b.isValid ? 0 : -1; @@ -18037,23 +18506,151 @@ class Sort extends Module{ var el1 = dir == "asc" ? a : b; var el2 = dir == "asc" ? b : a; - a = column.getFieldValue(el1.getData()); - b = column.getFieldValue(el2.getData()); + 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 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.deprecationCheck(); + + this.subscribe("column-init", this.initializeColumn.bind(this)); + } + + deprecationCheck(){ + if(typeof this.table.options.tooltipGenerationMode !== "undefined"){ + console.warn("Use of the tooltipGenerationMode option is now deprecated. 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; - a = typeof a !== "undefined" ? a : ""; - b = typeof b !== "undefined" ? b : ""; + 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 === "0" || tooltip === false){ + contentsEl.classList.add("tabulator-tooltip"); - el1Comp = el1.getComponent(); - el2Comp = el2.getComponent(); + contentsEl.addEventListener("mousemove", e => e.preventDefault()); + + this.popupInstance = this.popup(contentsEl); + + if(typeof renderedCallback === "function"){ + this.popupInstance.renderCallback(renderedCallback); + } - return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params); + 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()); + } } } -Sort.moduleName = "sort"; - -//load defaults -Sort.sorters = defaultSorters; +Tooltip.moduleName = "tooltip"; var defaultValidators = { //is integer @@ -18191,181 +18788,219 @@ var defaultValidators = { }; 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; + 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)){ invalid.push(cell.getComponent()); } }); - + return invalid.length ? invalid : true; } - + /////////////////////////////////// ////////// Row Functions ////////// /////////////////////////////////// - + rowValidate(row){ var invalid = []; - + row.cells.forEach((cell) => { if(!this.cellValidate(cell)){ 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; @@ -18377,71 +19012,69 @@ class Validate extends Module{ }; } } - + validate(validators, cell, value){ var self = this, - valid = [], + failedValidators = [], invalidIndex = this.invalidCells.indexOf(cell); - + if(validators){ validators.forEach((item) => { if(!item.func.call(self, cell.getComponent(), value, item.params)){ - valid.push({ + failedValidators.push({ type:item.type, parameters:item.params }); } }); } - - valid = valid.length ? valid : true; - + if(!cell.modules.validate){ cell.modules.validate = {}; } - - if(valid === true){ + + 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 = true; - + 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 valid; + + 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); } @@ -18462,7 +19095,7 @@ var modules = /*#__PURE__*/Object.freeze({ ColumnCalcsModule: ColumnCalcs, DataTreeModule: DataTree, DownloadModule: Download, - EditModule: Edit, + EditModule: Edit$1, ExportModule: Export, FilterModule: Filter, FormatModule: Format, @@ -18480,6 +19113,7 @@ var modules = /*#__PURE__*/Object.freeze({ MutatorModule: Mutator, PageModule: Page, PersistenceModule: Persistence, + PopupModule: Popup$1, PrintModule: Print, ReactiveDataModule: ReactiveData, ResizeColumnsModule: ResizeColumns, @@ -18488,6 +19122,7 @@ var modules = /*#__PURE__*/Object.freeze({ ResponsiveLayoutModule: ResponsiveLayout, SelectRowModule: SelectRow, SortModule: Sort, + TooltipModule: Tooltip, ValidateModule: Validate }); @@ -18496,6 +19131,7 @@ var defaultOptions = { debugEventsExternal:false, //flag to console log events debugEventsInternal:false, //flag to console log events debugInvalidOptions:true, //allow toggling of invalid option warnings + debugInitialization:true, //allow toggling of invalid option warnings height:false, //height of tabulator minHeight:false, //minimum height of tabulator @@ -18503,6 +19139,8 @@ var defaultOptions = { columnHeaderVertAlign:"top", //vertical alignment of column headers + popupContainer:false, + columns:[],//store for colum header info columnDefaults:{}, //store column default props @@ -18513,8 +19151,6 @@ var defaultOptions = { nestedFieldSeparator:".", //separator for nested data - tooltipGenerationMode:"load", //when to generate tooltips - footerElement:false, //hold footer element index:"id", //filed for row index @@ -18540,6 +19176,8 @@ var defaultOptions = { rowFormatterClipboard:null, rowFormatterHtmlOutput:null, + rowHeight:null, + placeholder:false, dataLoader:true, @@ -21762,7 +22400,6 @@ class FooterManager extends CoreFeature{ this.element = this.createElement(); //containing element this.containerElement = this.createContainerElement(); //containing element this.external = false; - this.links = []; } initialize(){ @@ -21812,15 +22449,15 @@ class FooterManager extends CoreFeature{ return this.element; } - append(element, parent){ - this.activate(parent); + append(element){ + this.activate(); this.containerElement.appendChild(element); this.table.rowManager.adjustTableSize(); } - prepend(element, parent){ - this.activate(parent); + prepend(element){ + this.activate(); this.element.insertBefore(element, this.element.firstChild); this.table.rowManager.adjustTableSize(); @@ -21840,7 +22477,7 @@ class FooterManager extends CoreFeature{ } } - activate(parent){ + activate(){ if(!this.active){ this.active = true; if(!this.external){ @@ -21848,16 +22485,10 @@ class FooterManager extends CoreFeature{ this.table.element.style.display = ''; } } - - if(parent){ - this.links.push(parent); - } } redraw(){ - this.links.forEach(function(link){ - link.footerRedraw(); - }); + this.dispatch("footer-redraw"); } } @@ -21947,7 +22578,7 @@ class InteractionManager extends CoreFeature { if(this.pseudoTrackers[key].target !== target){ if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, target); + this.dispatch(key + "-mouseleave", e, this.pseudoTrackers[key].target); } this.pseudoMouseLeave(key, e); @@ -22190,14 +22821,14 @@ class ComponentFunctionBinder{ } if(this.bindings[type][funcName]){ - console.warn("Unable to bind component handler, a matching function name is already bound", type, funcName, hanlder); + 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]){ + 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("_")){ @@ -22211,55 +22842,11 @@ class DataLoader extends CoreFeature{ constructor(table){ super(table); - this.loaderElement = this.createLoaderElement(); //loader message div - this.msgElement = this.createMsgElement(); //message element - this.loadingElement = null; - this.errorElement = null; - - this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request + this.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request this.loading = false; } - initialize(){ - var template; - - this.loaderElement.appendChild(this.msgElement); - - if(this.table.options.dataLoaderLoading){ - if(typeof this.table.options.dataLoaderLoading == "string"){ - template = document.createElement('template'); - template.innerHTML = this.table.options.dataLoaderLoading.trim(); - this.loadingElement = template.firstElementChild; - }else { - this.loadingElement = this.table.options.dataLoaderLoading; - } - } - - if(this.table.options.dataLoaderError){ - if(typeof this.table.options.dataLoaderError == "string"){ - template = document.createElement('template'); - template.innerHTML = this.table.options.dataLoaderError.trim(); - this.errorElement = template.firstElementChild; - }else { - this.errorElement = this.table.options.dataLoaderError; - } - } - } - - createLoaderElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-loader"); - return el; - } - - createMsgElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-loader-msg"); - el.setAttribute("role", "alert"); - - return el; - } + initialize(){} load(data, params, config, replace, silent){ var requestNo = ++this.requestOrder; @@ -22275,7 +22862,7 @@ class DataLoader extends CoreFeature{ this.loading = true; if(!silent){ - this.showLoader(); + this.alertLoader(); } //get params for request @@ -22293,7 +22880,7 @@ class DataLoader extends CoreFeature{ var rowData = this.chain("data-loaded", response, null, response); if(requestNo == this.requestOrder){ - this.hideLoader(); + this.clearAlert(); if(rowData !== false){ this.dispatchExternal("dataLoaded", rowData); @@ -22307,11 +22894,11 @@ class DataLoader extends CoreFeature{ this.dispatchExternal("dataLoadError", error); if(!silent){ - this.showError(); + this.alertError(); } setTimeout(() => { - this.hideLoader(); + this.clearAlert(); }, this.table.options.dataLoaderErrorTimeout); }) .finally(() => { @@ -22353,48 +22940,20 @@ class DataLoader extends CoreFeature{ this.requestOrder++; } - showLoader(){ + alertLoader(){ var shouldLoad = typeof this.table.options.dataLoader === "function" ? this.table.options.dataLoader() : this.table.options.dataLoader; if(shouldLoad){ - this.hideLoader(); - - while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild); - - this.msgElement.classList.remove("tabulator-error"); - this.msgElement.classList.add("tabulator-loading"); - - if(this.loadingElement){ - this.msgElement.appendChild(this.loadingElement); - }else { - this.msgElement.innerHTML = this.langText("data|loading"); - } - - this.table.element.appendChild(this.loaderElement); + this.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText("data|loading")); } } - showError(){ - this.hideLoader(); - - while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild); - this.msgElement.classList.remove("tabulator-loading"); - this.msgElement.classList.add("tabulator-error"); - - if(this.errorElement){ - this.msgElement.appendChild(this.errorElement); - }else { - this.msgElement.innerHTML = this.langText("data|error"); - } - - this.table.element.appendChild(this.loaderElement); + alertError(){ + this.table.alertManager.alert(this.table.options.dataLoaderError || this.langText("data|error"), "error"); } - - hideLoader(){ - if(this.loaderElement.parentNode){ - this.loaderElement.parentNode.removeChild(this.loaderElement); - } + clearAlert(){ + this.table.alertManager.clear(); } } @@ -23298,23 +23857,23 @@ var coreModules = /*#__PURE__*/Object.freeze({ }); class ModuleBinder { - + constructor(tabulator, modules){ this.bindStaticFuctionality(tabulator); this.bindModules(tabulator, coreModules, true); - + if(modules){ this.bindModules(tabulator, modules); } } - + bindStaticFuctionality(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){ @@ -23330,78 +23889,147 @@ class ModuleBinder { 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 orderedMods = [], + 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){ - orderedMods.push(module); + if(mod.moduleInitOrder < 0){ + orderedStartMods.push(module); + }else { + orderedEndMods.push(module); + } + }else { unOrderedMods.push(module); } } } - - orderedMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - - this.modulesRegular = orderedMods.concat(unOrderedMods); + + 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.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(){ + 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 @@ -23411,38 +24039,38 @@ class Tabulator { 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.optionsList = new OptionsList(this, "table constructor"); - + this.initialized = 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 { @@ -23454,222 +24082,223 @@ class Tabulator { 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(); - } + 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); } - + //deconstructor destroy(){ var element = this.element; - + TableRegistry.deregister(this); //deregister table from inter-device communication - + this.eventBus.dispatch("table-destroy"); - + //clear row data this.rowManager.rows.forEach(function(row){ row.wipe(); }); - + this.rowManager.rows = []; this.rowManager.activeRows = []; this.rowManager.displayRows = []; - + //clear DOM while(element.firstChild) element.removeChild(element.firstChild); element.classList.remove("tabulator"); } - + _detectBrowser(){ var ua = navigator.userAgent||navigator.vendor||window.opera; - + if(ua.indexOf("Trident") > -1){ this.browser = "ie"; this.browserSlow = true; @@ -23683,179 +24312,197 @@ class Tabulator { 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(); + return this.rowManager.blockRedraw(); } - + //restore table redrawing restoreRedraw(){ + this.initGuard(); + return this.rowManager.restoreRedraw(); } - + //load data setData(data, params, config){ - if(this.initialized){ - return this.dataLoader.load(data, params, config, false); - }else { - console.warn("setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor."); - } + 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){ - if(this.initialized){ - return this.dataLoader.load(data, params, config, true, true); - }else { - console.warn("replaceData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + this.initGuard(); + + return this.dataLoader.load(data, params, config, true, true); } - - //update table data - updateData(data){ - var responses = 0; - - if(this.initialized){ - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - if(row){ - responses++; - - row.updateData(item) - .then(()=>{ - responses--; - - if(!responses){ - resolve(); - } - }); - } - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - }else { - console.warn("updateData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + + //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.forEach((item) => { + var row = this.rowManager.findRow(item[this.options.index]); + + if(row){ + responses++; + + row.updateData(item) + .then(()=>{ + responses--; + + if(!responses){ + resolve(); + } + }); + } + }); + }else { + console.warn("Update Error - No data provided"); + reject("Update Error - No data provided"); + } + }); } - + addData(data, pos, index){ - if(this.initialized){ - 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); + 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()); }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - }else { - console.warn("addData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + + 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; - - if(this.initialized){ - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data){ - 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"); - } - }); - }else { - console.warn("updateOrAddData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + + this.initGuard(); + + return new Promise((resolve, reject) => { + this.dataLoader.blockActiveLoad(); + + if(typeof data === "string"){ + data = JSON.parse(data); + } + + if(data){ + 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 { @@ -23863,11 +24510,11 @@ class Tabulator { return false; } } - + //get row object getRowFromPosition(position, active){ var row = this.rowManager.getRowFromPosition(position, active); - + if(row){ return row.getComponent(); }else { @@ -23875,19 +24522,21 @@ class Tabulator { 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 { @@ -23895,46 +24544,46 @@ class Tabulator { 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){ - if(this.initialized){ - if(typeof data === "string"){ - data = JSON.parse(data); - } - - return this.rowManager.addRows(data, pos, index) - .then((rows)=>{ - return rows[0].getComponent(); - }); - }else { - console.warn("addRow failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); + this.initGuard(); + + if(typeof data === "string"){ + data = JSON.parse(data); } + + return this.rowManager.addRows(data, pos, index) + .then((rows)=>{ + return rows[0].getComponent(); + }); } - + //update a row if it exitsts 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(()=>{ @@ -23947,15 +24596,17 @@ class Tabulator { }) } } - + //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(()=>{ @@ -23966,11 +24617,11 @@ class Tabulator { 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 { @@ -23978,25 +24629,27 @@ class Tabulator { 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); + return this.rowManager.getComponents(active); } - + //get position of row in table getRowPosition(index, active){ var row = this.rowManager.findRow(index); - + if(row){ return this.rowManager.getRowPosition(row, active); }else { @@ -24004,38 +24657,38 @@ class Tabulator { return false; } } - + /////////////// Column Functions /////////////// setColumns(definition){ - if(this.initialized){ - this.columnManager.setColumns(definition); - }else { - console.warn("setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor."); - } + 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 col = this.columnManager.findColumn(field); - - if(col){ - return col.getComponent(); + 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 { @@ -24043,10 +24696,12 @@ class Tabulator { return false; } } - + hideColumn(field){ - var column = this.columnManager.findColumn(field); - + var column = this.columnManager.findColumn(field); + + this.initGuard(); + if(column){ column.hide(); }else { @@ -24054,10 +24709,12 @@ class Tabulator { return false; } } - + toggleColumn(field){ var column = this.columnManager.findColumn(field); - + + this.initGuard(); + if(column){ if(column.visible){ column.hide(); @@ -24069,19 +24726,23 @@ class Tabulator { 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 { @@ -24089,10 +24750,12 @@ class Tabulator { return Promise.reject(); } } - + updateColumnDefinition(field, definition){ var column = this.columnManager.findColumn(field); - + + this.initGuard(); + if(column){ return column.updateDefinition(definition) }else { @@ -24100,11 +24763,13 @@ class Tabulator { return Promise.reject(); } } - + moveColumn(from, to, after){ - var fromColumn = this.columnManager.findColumn(from); - var toColumn = this.columnManager.findColumn(to); - + var fromColumn = this.columnManager.findColumn(from), + toColumn = this.columnManager.findColumn(to); + + this.initGuard(); + if(fromColumn){ if(toColumn){ this.columnManager.moveColumn(fromColumn, toColumn, after); @@ -24115,12 +24780,12 @@ class Tabulator { 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 { @@ -24129,42 +24794,54 @@ class Tabulator { } }); } - + //////////// General Public Functions //////////// //redraw list without updating data redraw(force){ - if(this.initialized){ - this.columnManager.redraw(force); - this.rowManager.redraw(force); - }else { - console.warn("redraw failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } - } + 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(); } - + //////////////////// Event Bus /////////////////// - + on(key, callback){ this.externalEvents.subscribe(key, callback); } - + off(key, callback){ this.externalEvents.unsubscribe(key, callback); } - + dispatchEvent(){ var args = Array.from(arguments), key = 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]){ @@ -24176,14 +24853,14 @@ class Tabulator { return false; } } - + module(key){ var mod = this.modules[key]; - + if(!mod){ console.error("Tabulator module not installed: " + key); } - + return mod; } } @@ -24246,5 +24923,5 @@ class PseudoRow { clearCellHeight(){} } -export { Accessor as AccessorModule, Ajax as AjaxModule, CalcComponent, CellComponent, Clipboard as ClipboardModule, ColumnCalcs as ColumnCalcsModule, ColumnComponent, DataTree as DataTreeModule, Download as DownloadModule, Edit 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, Print as PrintModule, PseudoRow, ReactiveData as ReactiveDataModule, Renderer, ResizeColumns as ResizeColumnsModule, ResizeRows as ResizeRowsModule, ResizeTable as ResizeTableModule, ResponsiveLayout as ResponsiveLayoutModule, RowComponent$1 as RowComponent, SelectRow as SelectRowModule, Sort as SortModule, Tabulator, TabulatorFull, Validate as ValidateModule }; +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$1 as RowComponent, SelectRow as SelectRowModule, Sort as SortModule, Tabulator, TabulatorFull, Tooltip as TooltipModule, Validate as ValidateModule }; //# sourceMappingURL=tabulator_esm.js.map diff --git a/dist/js/tabulator_esm.js.map b/dist/js/tabulator_esm.js.map index 527620275..62a754add 100644 --- a/dist/js/tabulator_esm.js.map +++ b/dist/js/tabulator_esm.js.map @@ -1 +1 @@ -{"version":3,"file":"tabulator_esm.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/Module.js","../../src/js/core/tools/Helpers.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/select.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.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/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/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/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/Tabulator.js","../../src/js/core/TabulatorFull.js","../../src/js/core/row/PseudoRow.js"],"sourcesContent":["export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key){\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registation ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = func;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Module;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn clone;\r\n\t}\r\n}","export default {}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {\r\n\tmethod: \"GET\",\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nexport default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\r\n\t\t\tvar output = generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.config = {}; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\t\t\r\n\t\tthis.loaderPromise = false;\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\t\t\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\t\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\t\t\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\r\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\t\r\n\trequestParams(data, config, silent, params){\r\n\t\tvar ajaxParams = this.table.options.ajaxParams;\r\n\t\t\r\n\t\tif(ajaxParams){\r\n\t\t\tif(typeof ajaxParams === \"function\"){\r\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tparams = Object.assign(params, ajaxParams);\r\n\t\t}\t\t\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\t\r\n\trequestData(url, params, config, silent, previousData){\r\n\t\tvar ajaxConfig;\r\n\t\t\r\n\t\tif(!previousData && this.requestDataCheck(url)){\r\n\t\t\tif(url){\r\n\t\t\t\tthis.setUrl(url);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tajaxConfig = this.generateConfig(config);\r\n\t\t\t\r\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetDefaultConfig(config = {}){\r\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(this.config, config);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//load config object\r\n\tgenerateConfig(config = {}){\r\n\t\tvar ajaxConfig = Object.assign({}, this.config)\r\n\t\t\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tajaxConfig.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(ajaxConfig, config);\r\n\t\t}\r\n\t\t\r\n\t\treturn ajaxConfig;\r\n\t}\r\n\t\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\t\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\t\r\n\t//send ajax request\r\n\tsendRequest(url, params, config){\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\r\n\t\t\treturn this.loaderPromise(url, config, params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//update tooltip on mouse enter\r\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\"){\r\n\t\t\telement.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\t\tthis._generateTooltip();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//generate tooltip text\r\n\t_generateTooltip(){\r\n\t\tvar tooltip = this.column.tooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\ttooltip = this.value;\r\n\t\t\t}else if(typeof(tooltip) == \"function\"){\r\n\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof tooltip === \"undefined\"){\r\n\t\t\t\ttooltip = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate){\r\n\t\tvar changed = this.setValueProcessData(value, mutate);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tif(this.column.definition.cellEdited){\r\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value !== value){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\t\tthis._generateTooltip();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import Column from './Column.js';\r\n\r\n//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this._column.getTitleDownload();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"maxInitialWidth\": undefined,\r\n\t\"tooltip\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerTooltip\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.tooltip = false; //hold column tooltip\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleDownload = null;\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.maxInitialWidth = null;\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\tsetTooltip(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\t//set header tooltips\r\n\t\tvar tooltip = def.headerTooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(def.field){\r\n\t\t\t\t\tthis.langBind(\"columns|\" + def.field, (value) => {\r\n\t\t\t\t\t\tthis.element.setAttribute(\"title\", value || def.title);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.element.setAttribute(\"title\", def.title);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof(tooltip) == \"function\"){\r\n\t\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.setTooltip();\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\r\n\t\t//update header tooltip on mouse enter\r\n\t\tthis.element.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\tthis.setTooltip();\r\n\t\t});\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif (def.maxInitialWidth) {\r\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set tooltip if present\r\n\t\tthis.tooltip = this.definition.tooltip;\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\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);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this.titleDownload;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\t// maxInitialWidth ignored here as width specified\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData(force);\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(force){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tvar setTo = maxWidth + 1;\r\n\t\t\t\tif (this.maxInitialWidth && !force) {\r\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\r\n\t\t\t\t}\r\n\t\t\t\tthis.setWidthActual(setTo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //holde lements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.created = false;\r\n\r\n\t\tthis.setData(data);\r\n\t}\r\n\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\tthis.element = el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\r\n\t\tif(!this.initialized || force){\r\n\r\n\t\t\tthis.deleteCells();\r\n\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\r\n\t\t\tthis.generateCells();\r\n\r\n\t\t\tthis.initialized = true;\r\n\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t}\r\n\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tvar height = cell.getHeight();\r\n\t\t\tif(height > maxHeight){\r\n\t\t\t\tmaxHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t}else{\r\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t}\r\n\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\t\tif(force){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis.calcHeight(force);\r\n\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\r\n\t\t\tthis.manualHeight = true;\r\n\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\r\n\t\t\tthis.setCellHeight();\r\n\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\r\n\t\t\t//this.reinitialize();\r\n\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\r\n\t\tthis.deleteActual();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\r\n\t\tthis.detatchModules();\r\n\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\r\n\t\tthis.deleteCells();\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tif(this.topRow){\r\n\t\t\trows.unshift(this.topRow);\r\n\t\t}\r\n\r\n\t\tif(this.botRow){\r\n\t\t\trows.push(this.botRow);\r\n\t\t}\r\n\t\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRowsRefresh(){\r\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\r\n\t\t\tthis.recalcAll();\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.table.footerManager.remove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.table.footerManager.prepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(row);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeElementField(){\r\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\r\n\r\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\t}\r\n\t\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tvar field = cell.column.getField();\r\n\r\n\t\tif(field === this.elementField){\r\n\t\t\tthis.layoutRow(cell.row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowExpanded(row){\r\n\t\treturn row.modules.dataTree.open;\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\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 }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\r\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}});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","export default function (list, options, setFileContents) {\r\n\tconst fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tconst item = {};\r\n\r\n\t\tswitch (row.type) {\r\n\t\t\tcase \"header\":\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\t\tif (col) {\r\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tfileContents.push(JSON.stringify(item));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\r\n};","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\nimport jsonLines from './downloaders/jsonLines.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tjsonLines:jsonLines,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\n\r\n//dropdown select editor\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : []),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tmultiselect = editorParams.multiselect,\r\n\tdataItems = [],\r\n\tcurrentItem = {},\r\n\tdisplayItems = [],\r\n\tcurrentItems = [],\r\n\tblurable = true,\r\n\tblockListShow = false,\r\n\tsearchWord = \"\",\r\n\tsearchWordTimeout = null;\r\n\r\n\tif(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === \"object\" && !editorParams.values)){\r\n\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\r\n\t\teditorParams = {values:editorParams};\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\r\n\t\t}\r\n\r\n\t\treturn Object.keys(output);\r\n\t}\r\n\r\n\tfunction parseItems(inputValues, curentValues){\r\n\t\tvar dataList = [];\r\n\t\tvar displayList = [];\r\n\r\n\t\tfunction processComplexListItem(item){\r\n\t\t\tvar item = {\r\n\t\t\t\tlabel:item.label,\r\n\t\t\t\tvalue:item.value,\r\n\t\t\t\titemParams:item.itemParams,\r\n\t\t\t\telementAttributes: item.elementAttributes,\r\n\t\t\t\telement:false,\r\n\t\t\t};\r\n\r\n\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t// }\r\n\r\n\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\tsetItem(item);\r\n\t\t\t}\r\n\r\n\t\t\tdataList.push(item);\r\n\t\t\tdisplayList.push(item);\r\n\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif(typeof inputValues == \"function\"){\r\n\t\t\tinputValues = inputValues(cell);\r\n\t\t}\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\r\n\t\t\t\t\tif(value.options){\r\n\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\tlabel:value.label,\r\n\t\t\t\t\t\t\tgroup:true,\r\n\t\t\t\t\t\t\titemParams:value.itemParams,\r\n\t\t\t\t\t\t\telementAttributes:value.elementAttributes,\r\n\t\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdisplayList.push(item);\r\n\r\n\t\t\t\t\t\tvalue.options.forEach(function(item){\r\n\t\t\t\t\t\t\tprocessComplexListItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tprocessComplexListItem(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\titem = {\r\n\t\t\t\t\t\tlabel:value,\r\n\t\t\t\t\t\tvalue:value,\r\n\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\t\tsetItem(item);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataList.push(item);\r\n\t\t\t\t\tdisplayList.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tlabel:inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t\telement:false,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\tsetItem(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataList.push(item);\r\n\t\t\t\tdisplayList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(editorParams.sortValuesList){\r\n\t\t\tdataList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tdisplayList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList !== \"asc\"){\r\n\t\t\t\tdataList.reverse();\r\n\t\t\t\tdisplayList.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataItems = dataList;\r\n\t\tdisplayItems = displayList;\r\n\r\n\t\tfillList();\r\n\t}\r\n\r\n\tfunction fillList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\r\n\t\t\t\tif(item.group){\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\r\n\t\t\t\t\tel.addEventListener(\"click\", function(){\r\n\t\t\t\t\t\tblockListShow = true;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tblockListShow = false;\r\n\t\t\t\t\t\t}, 10);\r\n\r\n\t\t\t\t\t\t// setCurrentItem(item);\r\n\t\t\t\t\t\t// chooseItem();\r\n\t\t\t\t\t\tif(multiselect){\r\n\t\t\t\t\t\t\ttoggleItem(item);\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tchooseItem(item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// if(item === currentItem){\r\n\t\t\t\t\t// \tel.classList.add(\"active\");\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(currentItems.indexOf(item) > -1){\r\n\t\t\t\t\t\tel.classList.add(\"active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n\t\t\t\t\tfor (let key in item.elementAttributes){\r\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\t\t\t\tkey = key.slice(1);\r\n\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction setCurrentItem(item, active){\r\n\r\n\t\tif(!multiselect && currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"focused\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item.element){\r\n\t\t\titem.element.classList.add(\"focused\");\r\n\t\t\tif(active){\r\n\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// function chooseItem(){\r\n\t// \thideList();\r\n\r\n\t// \tif(initialValue !== currentItem.value){\r\n\t// \t\tinitialValue = currentItem.value;\r\n\t// \t\tsuccess(currentItem.value);\r\n\t// \t}else{\r\n\t// \t\tcancel();\r\n\t// \t}\r\n\t// }\r\n\r\n\tfunction setItem(item) {\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index == -1){\r\n\t\t\tcurrentItems.push(item);\r\n\t\t\tsetCurrentItem(item, true);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\t}\r\n\r\n\tfunction unsetItem(index) {\r\n\t\tvar item = currentItems[index];\r\n\r\n\t\tif(index > -1){\r\n\t\t\tcurrentItems.splice(index, 1);\r\n\t\t\tif(item.element){\r\n\t\t\t\titem.element.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleItem(item) {\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tunsetItem(index);\r\n\t\t}else{\r\n\t\t\tif(multiselect !== true && currentItems.length >= multiselect){\r\n\t\t\t\tunsetItem(0);\r\n\t\t\t}\r\n\r\n\t\t\tsetItem(item);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\r\n\t}\r\n\r\n\tfunction chooseItem(item){\r\n\t\thideList();\r\n\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tif(item){\r\n\t\t\tinput.value = item.label;\r\n\t\t\tsuccess(item.value);\r\n\t\t}\r\n\r\n\t\tinitialDisplayValue = [item.value];\r\n\t}\r\n\r\n\r\n\tfunction chooseItems(silent){\r\n\t\tif(!silent){\r\n\t\t\thideList();\r\n\t\t}\r\n\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.value);\r\n\t\t});\r\n\r\n\t\tinitialDisplayValue = output;\r\n\r\n\t\tsuccess(output);\r\n\t}\r\n\r\n\tfunction fillInput(){\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.label);\r\n\t\t});\r\n\r\n\t\tinput.value = output.join(\", \");\r\n\r\n\t\tif(self.currentCell === false){\r\n\t\t\tchooseItems(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction unsetItems() {\r\n\r\n\t\tvar len = currentItems.length;\r\n\r\n\t\tfor(let i = 0; i < len; i++){\r\n\t\t\tunsetItem(0);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tcurrentItems = [];\r\n\r\n\t\tif(!listEl.parentNode){\r\n\t\t\tif(editorParams.values === true){\r\n\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\r\n\t\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\r\n\t\t\t}else{\r\n\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\r\n\r\n\t\t\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tblurable = false;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tblurable = true;\r\n\t\t\t\t}, 10);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\tfunction scrollTovalue(char){\r\n\r\n\t\tclearTimeout(searchWordTimeout);\r\n\r\n\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\r\n\t\tsearchWord += character.toLowerCase();\r\n\r\n\t\tvar match = dataItems.find((item) => {\r\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tsetCurrentItem(match, !multiselect);\r\n\t\t}\r\n\r\n\t\tsearchWordTimeout = setTimeout(() => {\r\n\t\t\tsearchWord = \"\";\r\n\t\t}, 800)\r\n\t}\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\tinput.style.cursor = \"default\";\r\n\tinput.readOnly = (this.currentCell != false);\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\r\n\r\n\t// if(editorParams.values === true){\r\n\t// \tparseItems(getUniqueColumnValues(), initialValue);\r\n\t// }else if(typeof editorParams.values === \"string\"){\r\n\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\r\n\t// }else{\r\n\t// \tparseItems(editorParams.values || [], initialValue);\r\n\t// }\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tif(!input.value){\r\n\t\t\tunsetItems();\r\n\t\t\tchooseItems();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < dataItems.length - 1)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < dataItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\t// chooseItem();\r\n\r\n\t\t\tif(multiselect){\r\n\t\t\t\ttoggleItem();\r\n\t\t\t}else{\r\n\t\t\t\tchooseItem();\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(self.currentCell === false){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\r\n\t\t\t\tscrollTovalue(e.keyCode);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tchooseItems();\r\n\t\t\t}else{\r\n\t\t\t\tcancelItem();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tif(!blockListShow){\r\n\t\t\tshowList();\r\n\t\t}\r\n\t});\r\n\r\n\t//style list element\r\n\tlistEl = document.createElement(\"div\");\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\nimport maskInput from '../../inputMask.js';\r\n\r\n//autocomplete\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\"),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tallItems = [],\r\n\tdisplayItems = [],\r\n\tvalues = [],\r\n\tcurrentItem = false,\r\n\tblurable = true,\r\n\tuniqueColumnValues = false;\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"search\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style list element\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\tblurable = false;\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tblurable = true;\r\n\t\t}, 10);\r\n\t});\r\n\r\n\r\n\tfunction genUniqueColumnValues(){\r\n\t\tif(editorParams.values === true){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues();\r\n\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList){\r\n\t\t\t\tif(editorParams.sortValuesList == \"asc\"){\r\n\t\t\t\t\toutput = Object.keys(output).sort();\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput = Object.keys(output).sort().reverse();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\toutput = Object.keys(output);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\r\n\t\t}\r\n\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfunction filterList(term, intialLoad){\r\n\t\tvar matches = [],\r\n\t\tvalues, items, searchEl;\r\n\r\n\t\t//lookup base values list\r\n\t\tif(uniqueColumnValues){\r\n\t\t\tvalues = uniqueColumnValues;\r\n\t\t}else{\r\n\t\t\tvalues = editorParams.values || [];\r\n\t\t}\r\n\r\n\t\tif(editorParams.searchFunc){\r\n\t\t\tmatches = editorParams.searchFunc(term, values);\r\n\r\n\t\t\tif(matches instanceof Promise){\r\n\r\n\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\r\n\r\n\t\t\t\tmatches.then((result) => {\r\n\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\titems = parseItems(values);\r\n\r\n\t\t\tif(term === \"\"){\r\n\t\t\t\tif(editorParams.showListOnEmpty){\r\n\t\t\t\t\tmatches = items;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\titems.forEach(function(item){\r\n\t\t\t\t\tif(item.value !== null || typeof item.value !== \"undefined\"){\r\n\t\t\t\t\t\tif(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){\r\n\t\t\t\t\t\t\tmatches.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfillListIfNotEmpty(matches, intialLoad);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addNotice(notice){\r\n\t\tvar searchEl = document.createElement(\"div\");\r\n\r\n\t\tclearList();\r\n\r\n\t\tif(notice !== false){\r\n\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\r\n\t\t\tsearchEl.tabIndex = 0;\r\n\r\n\t\t\tif(notice instanceof Node){\r\n\t\t\t\tsearchEl.appendChild(notice);\r\n\t\t\t}else{\r\n\t\t\t\tsearchEl.innerHTML = notice;\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(searchEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parseItems(inputValues){\r\n\t\tvar itemList = [];\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\r\n\t\t\t\tvar item = {};\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\r\n\t\t\t\t\titem.value = value.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\r\n\t\t\t\t\titem.value = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttitle:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tfunction clearList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\t}\r\n\r\n\tfunction fillListIfNotEmpty(items, intialLoad){\r\n\t\tif(items.length){\r\n\t\t\tfillList(items, intialLoad);\r\n\t\t}else{\r\n\t\t\tif(editorParams.emptyPlaceholder){\r\n\t\t\t\taddNotice(editorParams.emptyPlaceholder);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillList(items, intialLoad){\r\n\t\tvar current = false;\r\n\r\n\t\tclearList();\r\n\r\n\t\tdisplayItems = items;\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\tel.innerHTML = item.title;\r\n\r\n\t\t\t\tel.addEventListener(\"click\", function(e){\r\n\t\t\t\t\tsetCurrentItem(item);\r\n\t\t\t\t\tchooseItem();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\t\t\t\tif(intialLoad && item.value == initialValue){\r\n\t\t\t\t\tinput.value = item.title;\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item === currentItem){\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\r\n\t\tif(!current){\r\n\t\t\tsetCurrentItem(false);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction chooseItem(){\r\n\t\thideList();\r\n\r\n\t\tif(currentItem){\r\n\t\t\tif(initialValue !== currentItem.value){\r\n\t\t\t\tinitialValue = currentItem.value;\r\n\t\t\t\tinput.value = currentItem.title;\r\n\t\t\t\tsuccess(currentItem.value);\r\n\t\t\t}else{\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(editorParams.freetext){\r\n\t\t\t\tinitialValue = input.value;\r\n\t\t\t\tsuccess(input.value);\r\n\t\t\t}else{\r\n\t\t\t\tif(editorParams.allowEmpty && input.value === \"\"){\r\n\t\t\t\t\tinitialValue = input.value;\r\n\t\t\t\t\tsuccess(input.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tif(!listEl.parentNode){\r\n\t\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentItem(item, showInputValue){\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item && item.element){\r\n\t\t\titem.element.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsetCurrentItem(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < displayItems.length - 1)){\r\n\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < displayItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\t// e.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tchooseItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 36: //home\r\n\t\t\tcase 35: //end\r\n\t\t\t//prevent table navigation while using input element\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"keyup\", function(e){\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //up arrow\r\n\t\t\tcase 40: //right arrow\r\n\t\t\tcase 13: //enter\r\n\t\t\tcase 27: //escape\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tfilterList(input.value);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tfilterList(input.value);\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tchooseItem();\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tvar value = initialDisplayValue;\r\n\t\tgenUniqueColumnValues();\r\n\t\tshowList();\r\n\t\tinput.value = value;\r\n\t\tfilterList(value, true);\r\n\t});\r\n\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\tgenUniqueColumnValues();\r\n\tinput.value = initialDisplayValue;\r\n\tfilterList(initialDisplayValue, true);\r\n\r\n\treturn input;\r\n};","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false;\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn input.checked;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(cell, e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.table.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(cell = this.currentCell, e){\r\n\t\tvar nextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(cell = this.currentCell, e){\r\n\t\tvar nextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tif(cancel){\r\n\t\t\t\tif(cell.column.modules.validate && this.table.modExists(\"validate\")){\r\n\t\t\t\t\tthis.table.modules.validate.cellValidate(cell);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = true;\r\n\r\n\t\t\t\tif(cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\"){\r\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\tif(valid !== true){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tif(cell.modules.validate){\r\n\t\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;\r\n","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\r\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\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\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\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\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\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\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.styleCells[index] || styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.styleCells[index] || styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\t\tthis.tableInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.tableInitialized = true;\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\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);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft + parseInt(this.table.columnManager.element.style.marginLeft);\r\n\r\n\t\t\t\t\tif(left !== headerPos){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.headerElement.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.tableInitialized){\r\n\t\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\t\tthis.reloadData();\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters());\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tsign = \"\",\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tif(floatVal < 0){\r\n\t\tfloatVal = Math.abs(floatVal);\r\n\t\tsign = negativeSign;\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\twhile (rgx.test(integer)){\r\n\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t}\r\n\r\n\treturn after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = data[formatterParams.labelField];\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = inputFormat === \"iso\" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat);\r\n\r\n\t\tif(newDatetime.isValid){\r\n\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.shiftTimezone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\r\n\t\t\tif(invalid === true || !value){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\t\r\n\t\tvar newDatetime = inputFormat === \"iso\" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat);\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\t// return moment.duration(newDatetime.diff(date)).humanize(suffix);\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1 || \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\tvar blocked = false;\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\r\n\t\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\t\tif(!blocked){\r\n\t\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tblocked = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\tblocked = true;\r\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\t\tthis.blocked = true;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\t\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\r\n\t}\r\n\t\r\n\tblockLayout(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\t\r\n\tunblockLayout(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n\t\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\t\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\t\t\r\n\t\tif(!column.isGroup){\r\n\t\t\t\r\n\t\t\tif(this.frozenCheck(column)){\r\n\t\t\t\t\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\t\t\t\t\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.active = true;\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfrozenCheck(column){\r\n\t\tvar frozen = false;\r\n\t\t\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\t\t\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\t\t\r\n\t\treturn frozen;\r\n\t}\r\n\t\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\t\t\t\r\n\t\t\tthis.calcMargins(true);\r\n\t\t\t\r\n\t\t\tthis.layoutColumnPosition();\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t//calculate margins for rows\r\n\tcalcMargins(scroll){\r\n\t\t\r\n\t\tif(!scroll){\r\n\t\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\t\t\t\r\n\t\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\t\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\t\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\t\tvar leftParents = [];\r\n\t\t\r\n\t\tvar leftMargin = 0;\r\n\t\tvar rightMargin = 0;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\t\r\n\t\t\tcolumn.modules.frozen.margin = (leftMargin + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tleftMargin += column.getWidth();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\trightMargin += column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - rightMargin) + \"px\";\r\n\t\t\t\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\t\r\n\t//layout columns appropriately\r\n\tlayout(){\r\n\t\tif(this.active && !this.blocked){\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\t\t\r\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\r\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\r\n\t\t}\r\n\t\t\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tlayoutElement(element, column){\r\n\t\t\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\t\t\t\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\t\t\t\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\t\t\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trows.push(row);\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\t\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.element = false;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\t\t\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\t\t\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\tif(row.modules){\r\n\t\t\t\t\tdelete row.modules.group;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.arrowElement = false;\r\n\t\tthis.elementContents = false;\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\t\t\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\taddBindings(){\r\n\t\tvar toggleElement;\r\n\t\t\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\t\t\t\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\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);\r\n\t\t\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\t\r\n\t_addRowToGroup(row){\r\n\t\t\r\n\t\tvar level = this.level + 1;\r\n\t\t\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\t\t\t\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\t\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\t\t\r\n\t\trow.updateData(data);\r\n\t\t\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\t\t\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\trow.modules.group = this;\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\t\r\n\tscrollHeader(left){\r\n\t\tif(this.arrowElement){\r\n\t\t\tthis.arrowElement.style.marginLeft = left;\r\n\t\t\t\r\n\t\t\tthis.groupList.forEach(function(child){\r\n\t\t\t\tchild.scrollHeader(left);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowIndex(row){}\r\n\t\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\t\t\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\t\t\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\t\t\t\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\t\t\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\t\t\t\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\toutput.push(this);\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\t\t\t\t\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\t\t\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\t\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\t\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\t\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tvar prev = this.generateElement();\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\t\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tif(typeof this.visible == \"function\"){\r\n\t\t\t\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\t\t\t\t\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\t\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\t\r\n\t////////////// Standard Row Functions //////////////\r\n\t\r\n\tgetElement(){\r\n\t\treturn this.elementContents ? this.element : this.generateElement();\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.addBindings = false;\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\t\t\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\t// this.addBindings();\r\n\t\t\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\t\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\t\t\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\t\r\n\treinitializeHeight(){}\r\n\t\r\n\tcalcHeight(){}\r\n\t\r\n\tsetCellHeight(){}\r\n\t\r\n\tclearCellHeight(){}\r\n\t\r\n\tdeinitializeHeight(){}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureGroupSetup(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.initialize();\r\n\t\t}else{\r\n\t\t\tthis.configureGroupSetup();\r\n\t\t}\r\n\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.configureGroupSetup();\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\r\n\r\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList = [];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Row from '../../core/row/Row.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","import Module from '../../core/Module.js';\r\nimport Column from '../../core/column/Column.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\r\n\t\t\tthis.parseTable();\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.originalElement,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for Tabulator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for Tabulator inline options\r\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","function csvImporter(input){\r\n var data = [],\r\n row = 0, \r\n col = 0,\r\n inQuote = false;\r\n \r\n //Iterate over each character\r\n for (let index = 0; index < input.length; index++) {\r\n let char = input[index], \r\n nextChar = input[index+1]; \r\n \r\n //Initialize empty row\r\n if(!data[row]){\r\n data[row] = [];\r\n }\r\n\r\n //Initialize empty column\r\n if(!data[row][col]){\r\n data[row][col] = \"\";\r\n }\r\n \r\n //Handle quotation mark inside string\r\n if (char == '\"' && inQuote && nextChar == '\"') { \r\n data[row][col] += char; \r\n index++;\r\n continue; \r\n }\r\n \r\n //Begin / End Quote\r\n if (char == '\"') { \r\n inQuote = !inQuote;\r\n continue;\r\n }\r\n \r\n //Next column (if not in quote)\r\n if (char == ',' && !inQuote) { \r\n col++;\r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CRLF) \r\n if (char == '\\r' && nextChar == '\\n' && !inQuote) { \r\n col = 0; \r\n row++; \r\n index++; \r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CR or LF) \r\n if ((char == '\\r' || char == '\\n') && !inQuote) { \r\n col = 0;\r\n row++;\r\n continue; \r\n }\r\n\r\n //Normal Character, append to column\r\n data[row][col] += char;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport default csvImporter;","export default function(input){\r\n try {\r\n return JSON.parse(input);\r\n } catch(e) {\r\n console.warn(\"JSON Import Error - File contents is invalid JSON\", e);\r\n return Promise.reject();\r\n }\r\n}","import csv from './importers/csv.js';\r\nimport json from './importers/json.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultImporters from './defaults/importers.js';\r\n\r\nclass Import extends Module{\r\n \r\n constructor(table){\r\n super(table);\r\n \r\n this.registerTableOption(\"importFormat\");\r\n this.registerTableOption(\"importReader\", \"text\");\r\n }\r\n \r\n initialize(){\r\n this.registerTableFunction(\"import\", this.importFromFile.bind(this));\r\n\r\n if(this.table.options.importFormat){\r\n this.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\r\n this.subscribe(\"data-load\", this.loadData.bind(this), 10);\r\n }\r\n }\r\n\r\n loadDataCheck(data){\r\n return typeof data === \"string\";\r\n }\r\n\r\n loadData(data, params, config, silent, previousData){\r\n return this.importData(this.lookupImporter(), data)\r\n .then(this.structureData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import data\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n\r\n lookupImporter(importFormat){\r\n var importer;\r\n \r\n if(!importFormat){\r\n importFormat = this.table.options.importFormat;\r\n }\r\n \r\n if(typeof importFormat === \"string\"){\r\n importer = Import.importers[importFormat];\r\n }else{\r\n importer = importFormat;\r\n }\r\n\r\n if(!importer){\r\n console.error(\"Import Error - Importer not found:\", importFormat);\r\n }\r\n \r\n return importer;\r\n }\r\n \r\n importFromFile(importFormat, extension){\r\n var importer = this.lookupImporter(importFormat);\r\n \r\n if(importer){\r\n return this.pickFile(extension)\r\n .then(this.importData.bind(this, importer))\r\n .then(this.structureData.bind(this))\r\n .then(this.setData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import file\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n }\r\n \r\n pickFile(extensions){\r\n return new Promise((resolve, reject) => {\r\n var input = document.createElement(\"input\");\r\n input.type = \"file\";\r\n input.accept = extensions;\r\n \r\n input.addEventListener(\"change\", (e) => {\r\n var file = input.files[0],\r\n reader = new FileReader(),\r\n data;\r\n \r\n switch(this.table.options.importReader){\r\n case \"buffer\":\r\n reader.readAsArrayBuffer(file);\r\n break;\r\n\r\n case \"binary\":\r\n reader.readAsBinaryString(file);\r\n break;\r\n\r\n case \"url\":\r\n reader.readAsDataURL(file);\r\n break;\r\n\r\n case \"text\":\r\n default:\r\n reader.readAsText(file);\r\n }\r\n \r\n reader.onload = (e) => {\r\n resolve(reader.result)\r\n };\r\n \r\n reader.onerror = (e) => {\r\n console.warn(\"File Load Error - Unable to read file\");\r\n reject();\r\n };\r\n });\r\n \r\n input.click();\r\n });\r\n }\r\n \r\n importData(importer, fileContents){\r\n var data = importer.call(this.table, fileContents);\r\n \r\n if(data instanceof Promise){\r\n return data;\r\n }else{\r\n return data ? Promise.resolve(data) : Promise.reject();\r\n }\r\n }\r\n\r\n structureData(parsedData){\r\n var data = [];\r\n \r\n if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\r\n if(this.table.options.autoColumns){\r\n data = this.structureArrayToObject(parsedData);\r\n }else{\r\n data = this.structureArrayToColumns(parsedData);\r\n }\r\n\r\n return data;\r\n }else{\r\n return parsedData;\r\n }\r\n }\r\n\r\n structureArrayToObject(parsedData){\r\n var columns = parsedData.shift();\r\n\r\n var data = parsedData.map((values) => {\r\n var row = {};\r\n\r\n columns.forEach((key, i) => {\r\n row[key] = values[i];\r\n })\r\n\r\n return row;\r\n })\r\n\r\n return data;\r\n }\r\n\r\n structureArrayToColumns(parsedData){\r\n var data = [],\r\n columns = this.table.getColumns();\r\n\r\n //remove first row if it is the column names\r\n if(columns[0] && parsedData[0][0]){\r\n if(columns[0].getDefinition().title === parsedData[0][0]){\r\n parsedData.shift();\r\n }\r\n }\r\n \r\n //convert row arrays to objects\r\n parsedData.forEach((rowData) => {\r\n var row = {};\r\n\r\n rowData.forEach((value, index) => {\r\n var column = columns[index];\r\n\r\n if(column){\r\n row[column.getField()] = value;\r\n }\r\n })\r\n\r\n data.push(row);\r\n });\r\n\r\n return data;\r\n }\r\n \r\n setData(data){\r\n return this.table.setData(data);\r\n }\r\n}\r\n\r\nImport.moduleName = \"import\";\r\n\r\n//load defaults\r\nImport.importers = defaultImporters;\r\n\r\nexport default Import;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tgroup:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\r\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\r\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 89\"],\r\n};","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings)\r\n\t\t\tObject.assign(mergedBindings, bindings)\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tbindingList.forEach((item) => {\r\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\r\n\t\t\t\t\t\t});\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Menu extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.menuContainer = null;\r\n\t\tthis.menuElements = [];\r\n\t\tthis.blurEvent = this.hideMenu.bind(this);\r\n\t\tthis.escEvent = this.escMenu.bind(this);\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\tthis.positionReversedX = false;\r\n\t\t\r\n\t\tthis.currentComponent = null;\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\t\tthis.registerTableOption(\"menuContainer\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerClickMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.lookupMenuContainer();\r\n\t\t\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tlookupMenuContainer(){\r\n\t\t\r\n\t\tthis.menuContainer = this.table.options.menuContainer;\r\n\t\t\r\n\t\tif(typeof this.menuContainer === \"string\"){\r\n\t\t\tthis.menuContainer = document.querySelector(this.menuContainer);\r\n\t\t\t\r\n\t\t\tif(!this.menuContainer){\r\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.menuContainer , \"(defaulting to document body)\");\r\n\t\t\t}\r\n\t\t}else if (this.menuContainer === true){\r\n\t\t\tthis.menuContainer = this.table.element;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.menuContainer && !this.checkMenuContainerIsParent(this.menuContainer)){\r\n\t\t\tthis.menuContainer = false;\r\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.menuContainer , \"(defaulting to document body)\");\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.menuContainer){\r\n\t\t\tthis.menuContainer = document.body;\r\n\t\t}\r\n\t}\r\n\t\r\n\tcheckMenuContainerIsParent(container, element = this.table.element){\r\n\t\tif(container === element){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\treturn element.parentNode ? this.checkMenuContainerIsParent(container, element.parentNode) : false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextMenu\", \"headerClickMenu\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\r\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\r\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerMenu){\r\n\t\t\tthis.initializeColumnHeaderMenu(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\r\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\r\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderMenu(column){\r\n\t\tvar headerMenuEl;\r\n\t\t\r\n\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\r\n\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\t\t\r\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadMenuTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuEvent(menu, e, component){\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\r\n\t\t\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\t\r\n\tloadMenu(e, component, menu, parentEl){\r\n\t\tvar touch = !(e instanceof MouseEvent);\r\n\t\t\r\n\t\tvar menuEl = document.createElement(\"div\");\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\t\t\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.isOpen()){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.hideMenu();\r\n\t\t\tthis.menuElements = [];\r\n\t\t}\r\n\t\t\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\t\t\t\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\t\t\t\t\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.hideOldSubMenus(menuEl);\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\t\t\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.hideMenu();\r\n\t\t});\r\n\t\t\r\n\t\tthis.menuElements.push(menuEl);\r\n\t\tthis.positionMenu(menuEl, parentEl, touch, e);\r\n\t\t\r\n\t\tthis.currentComponent = component\r\n\t\t\r\n\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent())\r\n\t}\r\n\t\r\n\thideOldSubMenus(menuEl){\r\n\t\tvar index = this.menuElements.indexOf(menuEl);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tfor(let i = this.menuElements.length - 1; i > index; i--){\r\n\t\t\t\tvar el = this.menuElements[i];\r\n\t\t\t\t\r\n\t\t\t\tif(el.parentNode){\r\n\t\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.menuElements.pop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tpositionMenu(element, parentEl, touch, e){\r\n\t\tvar x, y, parentOffset;\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tx = touch ? e.touches[0].pageX : e.pageX;\r\n\t\t\ty = touch ? e.touches[0].pageY : e.pageY;\r\n\t\t\t\r\n\t\t\tif(this.menuContainer !== document.body){\r\n\t\t\t\tparentOffset = Helpers.elOffset(this.menuContainer);\r\n\t\t\t\t\r\n\t\t\t\tx -= parentOffset.left;\r\n\t\t\t\ty -= parentOffset.top;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.positionReversedX = false;\r\n\t\t}else{\r\n\t\t\tparentOffset = Helpers.elOffset(parentEl);\r\n\t\t\tx = parentOffset.left + parentEl.offsetWidth;\r\n\t\t\ty = parentOffset.top - 1;\r\n\t\t}\r\n\t\t\r\n\t\telement.style.top = y + \"px\";\r\n\t\telement.style.left = x + \"px\";\r\n\t\t\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\r\n\t\t}, 100);\r\n\t\t\r\n\t\tthis.menuContainer.appendChild(element);\r\n\t\t\r\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\r\n\t\tif((x + element.offsetWidth) >= this.menuContainer.offsetWidth || this.positionReversedX){\r\n\t\t\telement.style.left = \"\";\r\n\t\t\t\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.right = (this.menuContainer.offsetWidth - parentOffset.left) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.right = (this.menuContainer.offsetWidth - x) + \"px\";\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.positionReversedX = true;\r\n\t\t}\r\n\t\t\r\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\r\n\t\tif((y + element.offsetHeight) > this.menuContainer.offsetHeight) {\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.top = (parseInt(element.style.top) - element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.top = (parseInt(element.style.top) - element.offsetHeight) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisOpen(){\r\n\t\treturn !!this.menuElements.length;\r\n\t}\r\n\t\r\n\tescMenu(e){\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tthis.hideMenu();\r\n\t\t}\r\n\t}\r\n\t\r\n\thideMenu(){\t\r\n\t\tthis.menuElements.forEach((menuEl) => {\r\n\t\t\tif(menuEl.parentNode){\r\n\t\t\t\tmenuEl.parentNode.removeChild(menuEl);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\r\n\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\r\n\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n\t\twindow.removeEventListener(\"resize\", this.blurEvent);\r\n\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n\t\t\r\n\t\tif(this.currentComponent){\r\n\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\r\n\t\t\tthis.currentComponent = null;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\t\t\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\t\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\t\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableColumns){\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\t\t\r\n\t\tif(!column.modules.frozen){\r\n\t\t\tcolEl = column.getElement();\r\n\t\t\t\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\t\t\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\t\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\t\t\t\t\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\t\t\t\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\t\t\t\t\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\t\t\t\t\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement(),\r\n\t\theaderElement = this.table.columnManager.getElement(),\r\n\t\theadersElement = this.table.columnManager.getHeadersElement();\r\n\t\t\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\t\t\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\t\t\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\t\t\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\t\t\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\t\t\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\r\n\t\t\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\t\t\t\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\t\t\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\t\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\t\t\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\t\t\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\t\t\t\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\t\t\t\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\t\t\t\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\t\t\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\t\t\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\tvar el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\r\n\tif(totalRows){\r\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\r\n\t\t\r\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\r\n\t\t\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(ofEl);\r\n\t\tel.appendChild(totalEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}else{\r\n\t\tvalueEl.innerHTML = \" 0 \";\r\n\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}\r\n\t\r\n\treturn el;\r\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\r\n var el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\t\r\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tel.appendChild(showingEl);\r\n\tel.appendChild(valueEl);\r\n\tel.appendChild(ofEl);\r\n\tel.appendChild(totalEl);\r\n\tel.appendChild(rowsEl);\r\n\t\r\n\treturn el;\r\n};","import rows from './pageCounters/rows.js';\r\nimport pages from './pageCounters/pages.js';\r\n\r\n\r\nexport default {\r\n\trows:rows,\r\n\tpages:pages,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPageCounters from './defaults/pageCounters.js';\r\n\r\nclass Page extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\t\t\r\n\t\tthis.element = null;\r\n\t\tthis.pageCounterElement = null;\r\n\t\tthis.pageCounter = null;\r\n\t\t\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.remoteRowCountEstimate = null;\r\n\t\t\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\t\t\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\t\t\r\n\t\tthis.pageSizes = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\r\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\t\t\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\t\t\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\r\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\t\t\t\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePageCounter();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn {index, top}\r\n\t}\r\n\t\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\t\t\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\t\t\t\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\t\t\t\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\t\t\t\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generatePageSizeSelectList();\r\n\t}\r\n\t\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\t\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\t\t\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn Promise.reject();\r\n\t}\r\n\t\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\t\t\t\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\t\t\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\t\t\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\t\t\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\t\t\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\t\t\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\t\t\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\t\t\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\t\t\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\t\t\t\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\t\t\t\t\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializePageCounter(){\r\n\t\tvar counter = this.table.options.paginationCounter,\r\n\t\tpageCounter = null;\r\n\t\t\r\n\t\tif(counter){\r\n\t\t\tif(typeof counter === \"function\"){\r\n\t\t\t\tpageCounter = counter;\r\n\t\t\t}else{\r\n\t\t\t\tpageCounter = Page.pageCounters[counter];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(pageCounter){\r\n\t\t\t\tthis.pageCounter = pageCounter;\r\n\t\t\t\t\r\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\r\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup pagination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel, paginationCounterHolder;\r\n\t\t\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\t\t\t\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\t\t\t\t\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\t\t\t\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tif(this.table.options.paginationCounter){\r\n\r\n\t\t\t\t\tpaginationCounterHolder \r\n\r\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\r\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\r\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\r\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(paginationCounterHolder){\r\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.footerManager.append(this.pageCounterElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.table.footerManager.append(this.element, this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\t\t}\r\n\t\t\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\t\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\t\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\t\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\t\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\t\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set the maximum page\r\n\tsetMaxPage(max){\r\n\t\t\r\n\t\tmax = parseInt(max);\r\n\t\t\r\n\t\tthis.max = max || 1;\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t\r\n\t\tpage = parseInt(page);\r\n\t\t\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\t\t\t\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\t\t\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\t\t\r\n\t\tthis.trackChanges();\r\n\t}\r\n\t\r\n\t_setPageCounter(totalRows, size, currentRow){\r\n\t\tvar content;\r\n\t\t\r\n\t\tif(this.pageCounter){\r\n\r\n\t\t\tif(this.mode === \"remote\"){\r\n\t\t\t\tsize = this.size;\r\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\r\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\r\n\t\t\t}\r\n\r\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\r\n\t\t\t\r\n\t\t\tswitch(typeof content){\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\tif(content instanceof Node){\r\n\t\t\t\t\t\r\n\t\t\t\t\t//clear previous cell contents\r\n\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageCounterElement.appendChild(content);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(content != null){\r\n\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);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"undefined\":\r\n\t\t\t\tcase \"null\":\r\n\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.pageCounterElement.innerHTML = content;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\t\t\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\t\t\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\t\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\t\t\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\t\t\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\t\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\t\t\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\t\t\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\t\t\r\n\t\treturn button;\r\n\t}\r\n\t\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger()\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\t\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\t\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\t\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\t\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar actualRowPageSize = 0,\r\n\t\toutput, start, end, actualStartRow;\r\n\r\n\t\tvar actualRows = data.filter((row) => {\r\n\t\t\treturn row.type === \"row\";\r\n\t\t});\r\n\t\t\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\t\t\t\r\n\t\t\tthis.setMaxRows(data.length);\r\n\t\t\t\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageButtons();\r\n\t\t\t\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tlet row = data[i];\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\toutput.push(row);\r\n\r\n\t\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\t\tif(!actualStartRow){\r\n\t\t\t\t\t\t\tactualStartRow = row;\r\n\t\t\t\t\t\t}\t\r\n\r\n\t\t\t\t\t\tactualRowPageSize++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\r\n\t\t\t\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\t\t\tthis._setPageCounter(actualRows.length);\r\n\t\t\t\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrigger(){\r\n\t\tvar left;\r\n\t\t\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\t\t\t\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\t\t\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\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));\r\n\t\t\t\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\t\t\t\t\t\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\treturn data.data;\r\n\t}\r\n\t\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.containerElement;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\t\t\t\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\n//load defaults\r\nPage.pageCounters = defaultPageCounters;\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.slice(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.slice(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};\r\n","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.options.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.options.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\nPersistence.moduleInitOrder = 1;\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar self = this,\r\n\t\tpushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn self.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\t// if(this.table.options.resizableColumns){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCellHandles.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.layoutColumnHeader.bind(this));\r\n\t\t// }\r\n\t}\r\n\t\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.initializeColumn(\"cell\", cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutColumnHeader(column){\r\n\t\tthis.initializeColumn(\"header\", column, column.element);\r\n\t}\r\n\t\r\n\tinitializeColumn(type, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable;\r\n\t\t\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tcolumn.modules.resize = {variableHeight:variableHeight};\r\n\t\t}\r\n\t\t\r\n\t\tif(mode === true || mode == type){\r\n\t\t\t\r\n\t\t\tvar handle = document.createElement('div');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tvar prevHandle = document.createElement('div');\r\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tvar nearestColumn = column.getLastColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn && self._checkResizability(nearestColumn)){\r\n\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//reszie column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar col = column.getLastColumn(),\r\n\t\t\t\toldWidth;\r\n\t\t\t\t\r\n\t\t\t\tif(col && self._checkResizability(col)){\r\n\t\t\t\t\toldWidth = col.getWidth();\r\n\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tcol.reinitializeWidth(true);\r\n\r\n\t\t\t\t\tif(oldWidth !== col.getWidth()){\r\n\t\t\t\t\t\tself.dispatch(\"column-resized\", col);\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", col.getComponent());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar prevHandleDown = function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\t\t\t\t\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\r\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//resize column on double click\r\n\t\t\tprevHandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\t\t\t\t\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\telement.appendChild(handle);\r\n\t\t\telement.appendChild(prevHandle);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\t\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\t\t\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\t// self.table.columnManager.tempScrollBlock();\r\n\t\t\t\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\t\t\t\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tfunction mouseUp(e){\r\n\t\t\t\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\t\t\t\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\t\t\t\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(self.startWidth !== column.getWidth()){\r\n\t\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\t\t\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\t\t\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.startWidth = column.getWidth();\r\n\t\t\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate responsive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//determine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\r\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort((a, b) => {\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initializeResponsivity();\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\t\t\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\t\t\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\r\n\t\t\t\r\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\t\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\t\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\t\t\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\t\t\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\t\t\t\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\t\t\r\n\t\trow.modules.select = {selected:false};\r\n\t\t\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\t\t\t\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\t\r\n\thandleComplexRowClick(row, e){\r\n\t\tif(e.shiftKey){\r\n\t\t\tthis.table._clearSelection();\r\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\r\n\t\t\t\r\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\r\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\r\n\t\t\t\r\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\r\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\t\t\t\r\n\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\r\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\r\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\r\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.lastClickedRow = row;\r\n\t\t\t}else{\r\n\t\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.selectable !== true){\r\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\r\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectRows(toggledRows);\r\n\t\t\t}\r\n\t\t\tthis.table._clearSelection();\r\n\t\t}\r\n\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\tthis.toggleRow(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}else{\r\n\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\tthis.selectRows(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\t\t\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"string\":\r\n\t\t\t\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\t\t\t\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\t\t\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\t\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\t\t\r\n\t\tif(typeof rows == \"undefined\"){\r\n\t\t\t\r\n\t\t\trowCount = self.selectedRows.length;\r\n\t\t\t\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(rowCount){\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\t\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tgetSelectedRows(){\r\n\t\t\r\n\t\tvar rows = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\t\t\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\t\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\t\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\t\t\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\ta = format === \"iso\" ? DT.fromISO(String(a)) : DT.fromFormat(String(a), format);\r\n\t\tb = format === \"iso\" ? DT.fromISO(String(b)) : DT.fromFormat(String(b), format);\r\n\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData(true);\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.invalidCells = [];\r\n\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? !cell.modules.validate.invalid : true;\r\n\t}\r\n\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trow = row.getComponent();\r\n\r\n\t\t\tvar valid = row.validate();\r\n\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\r\n\t\tif(column.definition.validator){\r\n\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t_buildValidator(type, params){\r\n\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tvalid = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach((item) => {\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tvalid.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalid = valid.length ? valid : true;\r\n\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\r\n\t\tif(valid === true){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = true;\r\n\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //separator for nested data\r\n\r\n\ttooltipGenerationMode:\"load\", //when to generate tooltips\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\tdataLoaderErrorTimeout:3000,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}\r\n","export default class OptionsList {\r\n\tconstructor(table, msgType, defaults = {}){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = Object.assign({}, defaults)\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determine weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\t\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t\t\r\n\t\tthis.fitDataColAvg = 0;\r\n\t\t\r\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\r\n\t\t\r\n\t\tthis.visibleRows = null;\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.isFitData = false;\r\n\t\t\r\n\t\tthis.columns = [];\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.compatibilityCheck();\r\n\t\tthis.layoutCheck();\r\n\t\tthis.vertScrollListen();\r\n\t}\r\n\t\r\n\tcompatibilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\t\t\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\t\t\r\n\t\treturn ok;\r\n\t}\r\n\t\r\n\tlayoutCheck(){\r\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\r\n\t}\r\n\r\n\tvertScrollListen(){\r\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\r\n\t}\r\n\r\n\tclearVisRowCache(){\r\n\t\tthis.visibleRows = null;\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\t\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\t\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\t\t\t\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\r\n\t\t}\r\n\t}\r\n\t\r\n\tcalcWindowBuffer(){\r\n\t\tvar buffer = this.elementVertical.clientWidth;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tif(width > buffer){\r\n\t\t\t\t\tbuffer = width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.windowBuffer = buffer * 2;\r\n\t}\r\n\t\r\n\trerenderColumns(update, blockRedraw){\t\t\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t},\r\n\t\tcolPos = 0;\r\n\t\t\r\n\t\t\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.clear();\r\n\t\t\r\n\t\tthis.calcWindowBuffer();\r\n\t\t\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\t\t\t\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\t\t\t\t\r\n\t\t\t\tconfig.width = width;\r\n\t\t\t\t\r\n\t\t\t\tif (this.isFitData) {\r\n\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t\t\t\t\t//column is visible\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol == -1){\r\n\t\t\t\t\t\tthis.leftCol = this.columns.length;\r\n\t\t\t\t\t\tthis.vDomPadLeft = colPos;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol = this.columns.length;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// column is hidden\r\n\t\t\t\t\tif(this.leftCol !== -1){\r\n\t\t\t\t\t\tthis.vDomPadRight += width;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.vdomHoz = config;\r\n\t\t\t\t\r\n\t\t\t\tcolPos += width;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.reinitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\t\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\t\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\t\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\t\t\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\t\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\t\t\r\n\t\tif(this.isFitData){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.generateCells();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// if(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t// \tbreak;\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// for(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t// \tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\t\t\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn !match;\r\n\t}\r\n\t\r\n\treinitializeRows(){\r\n\t\tvar rows = this.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetVisibleRows(){\r\n\t\tif (!this.visibleRows){\r\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t}\r\n\r\n\t\treturn this.visibleRows;\t\r\n\t}\r\n\t\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\t\r\n\t\t\tlet column = this.columns[this.rightCol + 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t\t\t}\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol - 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\r\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(diff){\r\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\r\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.rightCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\t\t\tthis.rightCol --;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\t\t\tthis.leftCol ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\t\t\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\t\t\t\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn widthDiff;\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\t\t\t\t\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\t\t\t\t\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nimport defaultColumnOptions from './column/defaults/options.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\t\t\tvar topColumn = nextToColumn.getTopColumn()\r\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\r\n\t\t\tvar nextEl = topColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcolumn.columnRendered();\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\tverticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibleColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.clearRows();\r\n\t\tthis.renderRows();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\t// element.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\r\n\t\t});\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\t\tthis.placeholder = null; //placeholder element\r\n\t\tthis.placeholderContents = null; //placeholder element\r\n\t\t\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\t\t\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\t\t\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\t\t\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\t\t\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\t\t\r\n\t\tthis.renderer = null;\r\n\t}\r\n\t\r\n\t//////////////// Setup Functions /////////////////\r\n\t\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitializePlaceholder(){\r\n\t\t//configure placeholder element\r\n\t\tif(typeof this.table.options.placeholder == \"string\"){\r\n\t\t\tlet el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\t\t\t\r\n\t\t\tlet contents = document.createElement(\"div\");\r\n\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\r\n\t\t\tcontents.innerHTML = this.table.options.placeholder;\r\n\t\t\t\r\n\t\t\tel.appendChild(contents);\r\n\t\t\t\r\n\t\t\tthis.placeholderContents = contents;\r\n\t\t\tthis.placeholder = el;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\t\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializePlaceholder()\r\n\t\tthis.initializeRenderer();\r\n\t\t\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\t\t\r\n\t\tthis.firstRender = true;\r\n\t\t\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\t\t\t\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\r\n\t\t\t\tthis._positionPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//handle vertical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\t\t\t\t\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\t\t\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\t\t\r\n\t\treturn match || false;\r\n\t}\r\n\t\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\t\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\t\t\t\t\r\n\t\t\t\tthis._setDataActual(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\t\t\r\n\t\tthis._wipeElements();\r\n\t\t\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\t\t\t\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\t\t\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\t\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\t\t\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\t\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\t\t\t\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlength = data.length - 1;\r\n\t\t\t\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, true);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn pos;\r\n\t}\r\n\t\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\t\t\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\t\t\t\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\t\t\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\t\t\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\t\t\t\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\t\t\t\t\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(top){\r\n\t\t\t\t\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\t\t\r\n\t\tthis.moveRowActual(from, to, after);\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\t\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\t\t\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\t\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\t\t\r\n\t\tif(from !== to){\r\n\t\t\t\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\t\t\t\r\n\t\t\tif (fromIndex > -1) {\r\n\t\t\t\t\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\t\t\t\t\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\t\t\t\t\r\n\t\t\t\tif (toIndex > -1) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\t\t\t\t\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\t\t\t\t\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\t\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\t\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\t\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\t\t\r\n\t\t\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\t\t\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn nextRow;\r\n\t}\r\n\t\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\t\t\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn prevRow;\r\n\t}\r\n\t\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\t\t\r\n\t\trow = this.findRow(row);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\t\t\r\n\t\treturn rows.length;\r\n\t}\r\n\t\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\t\t\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\t\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\t\t\r\n\t\t\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\t\t\t\t\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.renderTable();\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-refreshed\");\r\n\t\t}\r\n\t}\r\n\t\r\n\trefreshPipelines(handler, stage, index, renderInPosition){\r\n\t\tthis.dispatch(\"data-refreshing\");\r\n\t\t\r\n\t\tif(!handler){\r\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t}\r\n\t\t\r\n\t\t//cascade through data refresh stages\r\n\t\tswitch(stage){\r\n\t\t\tcase \"all\":\r\n\t\t\t//handle case where alldata needs refreshing\r\n\t\t\t\r\n\t\t\tcase \"dataPipeline\":\r\n\t\t\t\r\n\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\tindex = 0;\r\n\t\t\tthis.resetDisplayRows();\r\n\t\t\t\r\n\t\t\tcase \"displayPipeline\":\r\n\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\t\t\t\t\r\n\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcase \"end\":\r\n\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t}\r\n\t}\r\n\t\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\t\t\t\t\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\t\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\t\t\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\t\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\t\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\t\t\r\n\t\tvar output = true;\r\n\t\t\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\t\t\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetVisibleRows(chain, viewable){\r\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\r\n\t\t\r\n\t\tif(chain){\r\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\t\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(false, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\t\t\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\t\t\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\t\t\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t\t\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\t\r\n\trenderTable(){\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\t\t\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tthis._clearTable();\r\n\t\t\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis.renderer.renderRows();\r\n\t\t\t\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"table-layout\");\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\t\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\t\t\r\n\t\tthis._clearPlaceholder();\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\t\r\n\t_showPlaceholder(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\t\t\t\r\n\t\t\tthis.getElement().appendChild(this.placeholder);\r\n\t\t\tthis._positionPlaceholder();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_positionPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\r\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\t\t\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\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));\r\n\t\t\t\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.renderer.resize();\r\n\t\t\t\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._positionPlaceholder();\r\n\t}\r\n\t\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\t\t\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\t\t\t\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRenderInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.redrawBlockRenderInPosition = false;\r\n\t}\r\n\t\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t\t\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\t\t\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\t\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.containerElement = this.createContainerElement(); //containing element\r\n\t\tthis.external = false;\r\n\t\tthis.links = [];\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t\r\n\tcreateContainerElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer-contents\");\r\n\r\n\t\tthis.element.appendChild(el);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.containerElement.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(parent){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(parent){\r\n\t\t\tthis.links.push(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.links.forEach(function(link){\r\n\t\t\tlink.footerRedraw();\r\n\t\t});\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\nimport Row from '../row/Row.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\t\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.el = null;\r\n\t\t\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\t\t\r\n\t\tthis.previousTargets = {};\r\n\t\t\r\n\t\tthis.listeners = [\r\n\t\t\t\"click\",\r\n\t\t\t\"dblclick\",\r\n\t\t\t\"contextmenu\",\r\n\t\t\t\"mouseenter\",\r\n\t\t\t\"mouseleave\",\r\n\t\t\t\"mouseover\",\r\n\t\t\t\"mouseout\",\r\n\t\t\t\"mousemove\",\r\n\t\t\t\"touchstart\",\r\n\t\t\t\"touchend\",\r\n\t\t];\r\n\t\t\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\t\t\r\n\t\tthis.pseudoTrackers = {\r\n\t\t\t\"row\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"cell\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"group\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"column\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t}\r\n\t\t\r\n\t\tthis.pseudoTracking = false;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.el = this.table.element;\r\n\t\t\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\t\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\t\t\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\t\t\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\t\r\n\tbindPseudoEvents(){\r\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\r\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\r\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\r\n\t\t});\r\n\t\t\r\n\t\tthis.pseudoTracking = true;\r\n\t}\r\n\t\r\n\tpseudoMouseEnter(key, e, target){\r\n\t\tif(this.pseudoTrackers[key].target !== target){\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.pseudoMouseLeave(key, e);\r\n\t\t\t\r\n\t\t\tthis.pseudoTrackers[key].target = target;\r\n\t\t\t\r\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpseudoMouseLeave(key, e){\r\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\r\n\t\tlinkedKeys = {\r\n\t\t\t\"row\":[\"cell\"],\r\n\t\t\t\"cell\":[\"row\"],\r\n\t\t};\r\n\t\t\r\n\t\tleaveList = leaveList.filter((item) => {\r\n\t\t\tvar links = linkedKeys[key];\r\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\tleaveList.forEach((key) => {\r\n\t\t\tvar target = this.pseudoTrackers[key].target;\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t\t\r\n\t\t\t\tthis.pseudoTrackers[key].target = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\t\t\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\t\t\t\t\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this))\r\n\t}\r\n\t\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\t\t\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\r\n\t\t\tthis.bindPseudoEvents();\r\n\t\t}\r\n\t\t\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\t\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\t\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t\t\r\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\r\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\t\t\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\t\t\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\t\t\t\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\t\t\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\t\t\t\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\r\n\t\t\t\t\t\t\ttargets[key] = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tif(targets[\"row\"] instanceof Row){\r\n\t\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t\t}else{\t\r\n\t\t\t\t\t\t\tif(targets[\"row\"]){\r\n\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?\")\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.previousTargets = targetMatches;\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\t\t\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearWatchers(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.handler){\r\n\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\tlistener.handler = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFunctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, hanlder)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name]){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\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?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\r\n\t\tthis.msgElement = this.createMsgElement(); //message element\r\n\t\tthis.loadingElement = null;\r\n\t\tthis.errorElement = null;\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar template;\r\n\r\n\t\tthis.loaderElement.appendChild(this.msgElement);\r\n\r\n\t\tif(this.table.options.dataLoaderLoading){\r\n\t\t\tif(typeof this.table.options.dataLoaderLoading == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderLoading.trim();\r\n\t\t\t\tthis.loadingElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.loadingElement = this.table.options.dataLoaderLoading;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataLoaderError){\r\n\t\t\tif(typeof this.table.options.dataLoaderError == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderError.trim();\r\n\t\t\t\tthis.errorElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.errorElement = this.table.options.dataLoaderError;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcreateLoaderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-loader\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateMsgElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-loader-msg\");\r\n\t\tel.setAttribute(\"role\", \"alert\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.showLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\r\n\t\t\t\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.hideLoader();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\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\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.hideLoader();\r\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\tshowLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.hideLoader();\r\n\r\n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\r\n\t\t\tthis.msgElement.classList.remove(\"tabulator-error\");\r\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\r\n\r\n\t\t\tif(this.loadingElement){\r\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\r\n\t\t\t}else{\r\n\t\t\t\tthis.msgElement.innerHTML = this.langText(\"data|loading\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n\r\n\tshowError(){\r\n\t\tthis.hideLoader();\r\n\r\n\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\t\tthis.msgElement.classList.remove(\"tabulator-loading\");\r\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\r\n\r\n\t\tif(this.errorElement){\r\n\t\t\tthis.msgElement.appendChild(this.errorElement);\r\n\t\t}else{\r\n\t\t\tthis.msgElement.innerHTML = this.langText(\"data|error\");\r\n\t\t}\r\n\r\n\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t}\r\n\r\n\r\n\thideLoader(){\r\n\t\tif(this.loaderElement.parentNode){\r\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(table, optionsList, debug){\r\n\t\tthis.table = table;\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this.table, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tthis.dispatch(\"layout-refreshing\")\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t\t\"counter\":{\r\n\t\t\t\t\"showing\": \"Showing\",\r\n\t\t\t\t\"of\": \"of\",\r\n\t\t\t\t\"rows\": \"rows\",\r\n\t\t\t\t\"pages\": \"pages\",\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\r\n\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tvar orderedMods = [],\r\n\t\t\tunOrderedMods = [];\r\n\r\n\t\t\tthis.modules = {};\r\n\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\t\t\t\tlet module = new mod(this);\r\n\r\n\t\t\t\tthis.modules[name] = module;\r\n\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore.push(module);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(mod.moduleInitOrder){\r\n\t\t\t\t\t\torderedMods.push(module);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tunOrderedMods.push(module);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\torderedMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\r\n\t\t\tthis.modulesRegular = orderedMods.concat(unOrderedMods);\r\n\t\t}\r\n\t}\r\n\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nclass Tabulator {\r\n\r\n\tconstructor(element, options){\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\r\n\r\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\r\n\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tif(this.initializeElement(element)){\r\n\r\n\t\t\tthis.initializeCoreSystems(options);\r\n\r\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tTableRegistry.register(this); //register table for inter-device communication\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\r\n\t\tthis.bindModules();\r\n\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\r\n\t\tthis._clearObjectPointers();\r\n\r\n\t\tthis._mapDeprecatedFunctionality();\r\n\r\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\r\n\t\tthis.dataLoader.initialize();\r\n\t\t// this.columnManager.initialize();\r\n\t\t// this.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\r\n\t//convert deprecated functionality to new functions\r\n\t_mapDeprecatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t_clearSelection(){\r\n\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tif (window.getSelection) {\r\n\t\t if (window.getSelection().empty) { // Chrome\r\n\t\t \twindow.getSelection().empty();\r\n\t\t } else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t \twindow.getSelection().removeAllRanges();\r\n\t\t }\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\r\n\t//create table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\r\n\t\tthis._rtlCheck();\r\n\r\n\t\tthis._buildElement();\r\n\r\n\t\tthis._initializeTable();\r\n\r\n\t\tthis._loadInitialData();\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_rtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\r\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options,\r\n\t\tnewElement;\r\n\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\r\n\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\r\n\t\tthis.interactionMonitor.initialize();\r\n\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\r\n\t\tthis._detectBrowser();\r\n\r\n\t\t//initialize core modules\r\n\t\tthis.modulesCore.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t})\r\n\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\r\n\t\tif(options.autoColumns && options.data){\r\n\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\r\n\t\t//initialize regular modules\r\n\t\tthis.modulesRegular.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t});\r\n\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t}\r\n\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\r\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\r\n\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\r\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));\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"replaceData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"updateData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\taddData(data, pos, index){\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t\t.then((rows) => {\r\n\t\t\t\t\t\tvar output = [];\r\n\r\n\t\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tresolve(output);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"addData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"updateOrAddData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tif(this.initialized){\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"addRow failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn Promise.resolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\r\n\t}\r\n\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.columnManager.setColumns(definition);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\r\n\tgetColumn(field){\r\n\t\tvar col = this.columnManager.findColumn(field);\r\n\r\n\t\tif(col){\r\n\t\t\treturn col.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from);\r\n\t\tvar toColumn = this.columnManager.findColumn(to);\r\n\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.columnManager.redraw(force);\r\n\t\t\tthis.rowManager.redraw(force);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"redraw failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\r\n\t//////////////////// Event Bus ///////////////////\r\n\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;\r\n","//tabulator with all modules installed\r\nimport {default as Tabulator} from './Tabulator.js';\r\nimport * as modules from '../core/modules/optional.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nclass TabulatorFull extends Tabulator {};\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(TabulatorFull, modules);\r\n\r\nexport default TabulatorFull;","export default class PseudoRow {\r\n\r\n\tconstructor (type){\r\n\t\tthis.type = type;\r\n\t\tthis.element = this._createElement();\r\n\t}\r\n\r\n\t_createElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetComponent(){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn {};\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.outerHeight;\r\n\t}\r\n\r\n\tinitialize(){}\r\n\r\n\treinitialize(){}\r\n\r\n\tnormalizeHeight(){}\r\n\r\n\tgenerateCells(){}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n}"],"names":["generateParamsList","defaultOptions","RowComponent","html","textarea","tickCross","star","progress","csv","json","datetime","number","RendererVirtualDomHorizontal","RendererBasicHorizontal","RendererVirtualDomVertical","RendererBasicVertical","InteractionMonitor"],"mappings":"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"} \ No newline at end of file +{"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/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.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/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/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{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key){\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn clone;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class Popup extends CoreFeature{\r\n constructor(table, element, parent){\r\n super(table);\r\n \r\n this.element = element;\r\n this.container = this._lookupContainer();\r\n \r\n this.parent = parent;\r\n \r\n this.reversedX = false;\r\n this.childPopup = null;\r\n this.blurable = false;\r\n this.blurCallback = null;\r\n this.renderedCallback = null;\r\n \r\n this.visible = false;\r\n \r\n this.element.classList.add(\"tabulator-popup-container\");\r\n \r\n this.blurEvent = this.hide.bind(this, false);\r\n this.escEvent = this._escapeCheck.bind(this);\r\n }\r\n \r\n _lookupContainer(){\r\n var container = this.table.options.popupContainer;\r\n \r\n if(typeof container === \"string\"){\r\n container = document.querySelector(container);\r\n \r\n if(!container){\r\n console.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\r\n }\r\n }else if (container === true){\r\n container = this.table.element;\r\n }\r\n \r\n if(container && !this._checkContainerIsParent(container)){\r\n container = false;\r\n console.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\r\n }\r\n \r\n if(!container){\r\n container = document.body;\r\n }\r\n \r\n return container;\r\n }\r\n \r\n _checkContainerIsParent(container, element = this.table.element){\r\n if(container === element){\r\n return true;\r\n }else{\r\n return element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\r\n }\r\n }\r\n \r\n renderCallback(callback){\r\n this.renderedCallback = callback;\r\n }\r\n \r\n containerEventCoords(e){\r\n var touch = !(e instanceof MouseEvent);\r\n \r\n var x = touch ? e.touches[0].pageX : e.pageX;\r\n var y = touch ? e.touches[0].pageY : e.pageY;\r\n \r\n if(this.container !== document.body){\r\n let parentOffset = Helpers.elOffset(this.container);\r\n \r\n x -= parentOffset.left;\r\n y -= parentOffset.top;\r\n }\r\n \r\n return {x, y};\r\n }\r\n \r\n elementPositionCoords(element, position = \"right\"){\r\n var offset = Helpers.elOffset(element),\r\n containerOffset, x, y;\r\n \r\n if(this.container !== document.body){\r\n containerOffset = Helpers.elOffset(this.container);\r\n \r\n offset.left -= containerOffset.left;\r\n offset.top -= containerOffset.top;\r\n }\r\n \r\n switch(position){\r\n case \"right\":\r\n x = offset.left + element.offsetWidth;\r\n y = offset.top - 1;\r\n break;\r\n \r\n case \"bottom\":\r\n x = offset.left;\r\n y = offset.top + element.offsetHeight;\r\n break;\r\n }\r\n \r\n return {x, y, offset};\r\n }\r\n \r\n show(origin, position){\r\n var x, y, parentEl, parentOffset, containerOffset, coords;\r\n \r\n if(origin instanceof HTMLElement){\r\n parentEl = origin;\r\n coords = this.elementPositionCoords(origin, position);\r\n \r\n parentOffset = coords.offset;\r\n x = coords.x;\r\n y = coords.y;\r\n \r\n }else if(typeof origin === \"number\"){\r\n parentOffset = {top:0, left:0};\r\n x = origin;\r\n y = position;\r\n }else{\r\n coords = this.containerEventCoords(origin);\r\n \r\n x = coords.x;\r\n y = coords.y;\r\n \r\n this.reversedX = false;\r\n }\r\n \r\n this.element.style.top = y + \"px\";\r\n this.element.style.left = x + \"px\";\r\n \r\n this.container.appendChild(this.element);\r\n \r\n if(typeof this.renderedCallback === \"function\"){\r\n this.renderedCallback();\r\n }\r\n \r\n this._fitToScreen(x, y, parentEl, parentOffset, position);\r\n \r\n this.visible = true;\r\n \r\n return this;\r\n }\r\n \r\n _fitToScreen(x, y, parentEl, parentOffset, position){\r\n var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\r\n\r\n //move menu to start on right edge if it is too close to the edge of the screen\r\n if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\r\n this.element.style.left = \"\";\r\n \r\n if(parentEl){\r\n this.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\r\n }else{\r\n this.element.style.right = (this.container.offsetWidth - x) + \"px\";\r\n }\r\n \r\n this.reversedX = true;\r\n }\r\n\r\n //move menu to start on bottom edge if it is too close to the edge of the screen\r\n if((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\r\n if(parentEl){\r\n switch(position){\r\n case \"bottom\":\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\r\n break;\r\n\r\n default:\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\r\n }\r\n \r\n }else{\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\r\n }\r\n }\r\n }\r\n \r\n isVisible(){\r\n return this.visible;\r\n }\r\n \r\n hideOnBlur(callback){\r\n this.blurable = true;\r\n \r\n if(this.visible){\r\n setTimeout(() => {\r\n this.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n this.subscribe(\"cell-editing\", this.blurEvent);\r\n document.body.addEventListener(\"click\", this.blurEvent);\r\n document.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n window.addEventListener(\"resize\", this.blurEvent);\r\n document.body.addEventListener(\"keydown\", this.escEvent);\r\n }, 100);\r\n \r\n this.blurCallback = callback;\r\n }\r\n \r\n return this;\r\n }\r\n \r\n _escapeCheck(e){\r\n if(e.keyCode == 27){\r\n this.hide();\r\n }\r\n }\r\n \r\n hide(silent = false){\r\n if(this.visible){\r\n if(this.blurable){\r\n document.body.removeEventListener(\"keydown\", this.escEvent);\r\n document.body.removeEventListener(\"click\", this.blurEvent);\r\n document.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n window.removeEventListener(\"resize\", this.blurEvent);\r\n this.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n this.unsubscribe(\"cell-editing\", this.blurEvent);\r\n }\r\n \r\n if(this.childPopup){\r\n this.childPopup.hide();\r\n }\r\n \r\n if(this.parent){\r\n this.parent.childPopup = null;\r\n }\r\n \r\n if(this.element.parentNode){\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n\r\n this.visible = false;\r\n\r\n if(this.blurCallback && !silent){\r\n this.blurCallback();\r\n }\r\n }\r\n \r\n return this;\r\n }\r\n \r\n child(element){\r\n if(this.childPopup){\r\n this.childPopup.hide();\r\n }\r\n \r\n this.childPopup = new Popup(this.table, element, this);\r\n \r\n return this.childPopup;\r\n }\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Popup from './tools/Popup.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registration ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = (...args) => {\r\n\t\t\t\tthis.table.initGuard(name);\r\n\r\n\t\t\t\treturn func(...args);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Footer Management ////////\r\n\t///////////////////////////////////\r\n\r\n\tfooterAppend(element){\r\n\t\treturn this.table.footerManager.append(element)\r\n\t}\r\n\r\n\tfooterPrepend(element){\r\n\t\treturn this.table.footerManager.prepend(element)\r\n\t}\r\n\r\n\tfooterRemove(element){\r\n\t\treturn this.table.footerManager.remove(element)\r\n\t} \r\n\r\n\t///////////////////////////////////\r\n\t//////// Popups Management ////////\r\n\t///////////////////////////////////\r\n\t\r\n\tpopup(menuEl, menuContainer){\r\n\t\treturn new Popup(this.table, menuEl, menuContainer);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Alert Management ////////\r\n\t///////////////////////////////////\r\n\r\n\talert(content, type){\r\n\t\treturn this.table.alertManager.alert(content, type);\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\treturn this.table.alertManager.clear();\r\n\t}\r\n\t\r\n}\r\n\r\nexport default Module;","export default {}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {\r\n\tmethod: \"GET\",\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nexport default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\r\n\t\t\tvar output = generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.config = {}; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\t\t\r\n\t\tthis.loaderPromise = false;\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\t\t\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\t\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\t\t\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\r\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\t\r\n\trequestParams(data, config, silent, params){\r\n\t\tvar ajaxParams = this.table.options.ajaxParams;\r\n\t\t\r\n\t\tif(ajaxParams){\r\n\t\t\tif(typeof ajaxParams === \"function\"){\r\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tparams = Object.assign(params, ajaxParams);\r\n\t\t}\t\t\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\t\r\n\trequestData(url, params, config, silent, previousData){\r\n\t\tvar ajaxConfig;\r\n\t\t\r\n\t\tif(!previousData && this.requestDataCheck(url)){\r\n\t\t\tif(url){\r\n\t\t\t\tthis.setUrl(url);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tajaxConfig = this.generateConfig(config);\r\n\t\t\t\r\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetDefaultConfig(config = {}){\r\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(this.config, config);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//load config object\r\n\tgenerateConfig(config = {}){\r\n\t\tvar ajaxConfig = Object.assign({}, this.config)\r\n\t\t\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tajaxConfig.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(ajaxConfig, config);\r\n\t\t}\r\n\t\t\r\n\t\treturn ajaxConfig;\r\n\t}\r\n\t\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\t\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\t\r\n\t//send ajax request\r\n\tsendRequest(url, params, config){\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\r\n\t\t\treturn this.loaderPromise(url, config, params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate, force){\r\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tif(this.column.definition.cellEdited){\r\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate, force){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value !== value || force){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\r\n\t\tthis.dispatch(\"cell-height\", this, \"\");\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\r\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import Column from './Column.js';\r\n\r\n//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this._column.getTitleDownload();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"maxInitialWidth\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleDownload = null;\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.maxInitialWidth = null;\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif (def.maxInitialWidth) {\r\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\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);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\r\n\t\t\tcolumn.columnRendered();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\r\n\t\tthis.dispatch(\"column-height\", this, \"\");\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this.titleDownload;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-rendered\", this);\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\t// maxInitialWidth ignored here as width specified\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData(force);\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(force){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tvar setTo = maxWidth + 1;\r\n\t\t\t\tif (this.maxInitialWidth && !force) {\r\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\r\n\t\t\t\t}\r\n\t\t\t\tthis.setWidthActual(setTo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\t\t\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //hold elements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.created = false;\r\n\t\t\r\n\t\tthis.setData(data);\r\n\t}\r\n\t\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\t\t\r\n\t\tthis.element = el;\r\n\t}\r\n\t\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\t\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\t\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\t\t\r\n\t\tif(!this.initialized || force){\r\n\t\t\t\r\n\t\t\tthis.deleteCells();\r\n\t\t\t\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\t\t\t\r\n\t\t\tthis.generateCells();\r\n\t\t\t\r\n\t\t\tthis.initialized = true;\r\n\t\t\t\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\t\t\t\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\t\t\t\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t\t\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t}\r\n\t\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\t\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\t\t\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\t\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight;\r\n\t\t\r\n\t\tif(this.table.options.rowHeight){\r\n\t\t\tthis.height = this.table.options.rowHeight;\r\n\t\t}else{\r\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\t\t\t\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tvar height = cell.getHeight();\r\n\t\t\t\tif(height > maxHeight){\r\n\t\t\t\t\tmaxHeight = height;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(force){\r\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t\t}else{\r\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\t\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\t\t\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\t\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\t\tif(force && !this.table.options.rowHeight){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\t\t\r\n\t\tthis.calcHeight(force);\r\n\t\t\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\t\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\t\t\t\r\n\t\t\tthis.manualHeight = true;\r\n\t\t\t\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\t\t\t\r\n\t\t\tthis.setCellHeight();\r\n\t\t\t\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\t\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\t\t\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\t\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\t\t\t\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\t\t\t\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\t\t\t\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\t\t\t\t\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\t\t\t\t\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\t\t\t\r\n\t\t\t//this.reinitialize();\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\t\t\t\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.data;\r\n\t}\r\n\t\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\t\t\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\t\t\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\t\t\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\t\t\r\n\t\treturn this.cells;\r\n\t}\r\n\t\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\t\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\t\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\t\t\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\t\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\t\t\r\n\t\tthis.deleteActual();\r\n\t\t\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\t\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\t\t\r\n\t\tthis.detatchModules();\r\n\t\t\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\t\t\r\n\t\tthis.deleteCells();\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\t\t\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\t\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\t\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\t\t\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\t\t\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\t\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tif(this.topRow){\r\n\t\t\trows.unshift(this.topRow);\r\n\t\t}\r\n\r\n\t\tif(this.botRow){\r\n\t\t\trows.push(this.botRow);\r\n\t\t}\r\n\t\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRowsRefresh(){\r\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\r\n\t\t\tthis.recalcAll();\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.footerRemove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.footerPrepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(row);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeElementField(){\r\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\r\n\r\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\t}\r\n\t\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tvar field = cell.column.getField();\r\n\r\n\t\tif(field === this.elementField){\r\n\t\t\tthis.layoutRow(cell.row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowExpanded(row){\r\n\t\treturn row.modules.dataTree.open;\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\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 }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\r\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}});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","export default function (list, options, setFileContents) {\r\n\tconst fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tconst item = {};\r\n\r\n\t\tswitch (row.type) {\r\n\t\t\tcase \"header\":\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\t\tif (col) {\r\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tfileContents.push(JSON.stringify(item));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\r\n};","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\nimport jsonLines from './downloaders/jsonLines.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tjsonLines:jsonLines,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\tif(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n\r\n if(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\r\n\t\tif(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import maskInput from './inputMask.js';\r\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\r\n\r\nexport default class Edit{\r\n constructor(editor, cell, onRendered, success, cancel, editorParams){\r\n this.edit = editor;\r\n this.table = editor.table;\r\n this.cell = cell;\r\n this.params = this._initializeParams(editorParams);\r\n \r\n this.data = [];\r\n this.displayItems = [];\r\n this.currentItems = [];\r\n this.focusedItem = null;\r\n \r\n this.input = this._createInputElement();\r\n this.listEl = this._createListElement();\r\n \r\n this.initialValues = null; \r\n \r\n this.isFilter = !cell._getSelf;\r\n \r\n this.filterTimeout = null;\r\n this.filtered = false;\r\n this.typing = false;\r\n \r\n this.values = []; \r\n this.popup = null; \r\n \r\n this.listIteration = 0;\r\n \r\n this.blurable = true;\r\n \r\n this.actions = {\r\n success:success,\r\n cancel:cancel\r\n }\r\n \r\n this._deprecationCheck();\r\n this._initializeValue();\r\n \r\n onRendered(this._onRendered.bind(this));\r\n }\r\n \r\n _deprecationCheck(){\r\n if(this.params.listItemFormatter){\r\n console.warn(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.sortValuesList){\r\n console.warn(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.searchFunc){\r\n console.warn(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.searchingPlaceholder){\r\n console.warn(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n }\r\n \r\n _initializeValue(){\r\n var initialValue = this.cell.getValue();\r\n \r\n if(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\r\n initialValue = this.params.defaultValue;\r\n }\r\n \r\n this.initialValues = this.params.multiselect ? initialValue : [initialValue];\r\n \r\n if(this.isFilter){\r\n this.input.value = this.initialValues.join(\",\");\r\n this.headerFilterInitialListGen(); \r\n }\r\n }\r\n \r\n _onRendered(){\r\n var cellEl = this.cell.getElement();\r\n \r\n function clickStop(e){\r\n e.stopPropagation();\r\n }\r\n \r\n this.input.style.height = \"100%\";\r\n this.input.focus({preventScroll: true});\r\n \r\n \r\n cellEl.addEventListener(\"click\", clickStop);\r\n \r\n setTimeout(() => {\r\n cellEl.removeEventListener(\"click\", clickStop);\r\n }, 1000)\r\n }\r\n \r\n _createListElement(){\r\n var listEl = document.createElement(\"div\");\r\n listEl.classList.add(\"tabulator-edit-list\");\r\n \r\n listEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\r\n listEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this))\r\n \r\n return listEl;\r\n }\r\n \r\n _setListWidth(){\r\n var element = this.isFilter ? this.input : this.cell.getElement();\r\n \r\n this.listEl.style.minWidth = element.offsetWidth + \"px\";\r\n \r\n if(this.params.maxWidth){\r\n if(this.params.maxWidth === true){\r\n this.listEl.style.maxWidth = element.offsetWidth + \"px\";\r\n }else if(typeof this.params.maxWidth === \"number\"){\r\n this.listEl.style.maxWidth = this.params.maxWidth + \"px\";\r\n }else{\r\n this.listEl.style.maxWidth = this.params.maxWidth;\r\n }\r\n }\r\n \r\n }\r\n \r\n _createInputElement(){\r\n var attribs = this.params.elementAttributes;\r\n var input = document.createElement(\"input\");\r\n \r\n input.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\r\n \r\n input.style.padding = \"4px\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n \r\n if(!this.params.autocomplete){\r\n input.style.cursor = \"default\";\r\n input.style.caretColor = \"transparent\";\r\n // input.readOnly = (this.edit.currentCell != false);\r\n }\r\n \r\n if(attribs && typeof attribs == \"object\"){\r\n for (let key in attribs){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + attribs[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, attribs[key]);\r\n }\r\n }\r\n }\r\n \r\n if(this.params.mask){\r\n maskInput(input, this.params);\r\n }\r\n \r\n this._bindInputEvents(input);\r\n \r\n return input;\r\n }\r\n \r\n _initializeParams(params){\r\n var valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\r\n valueCheck;\r\n\r\n params = Object.assign({}, params);\r\n \r\n params.verticalNavigation = params.verticalNavigation || \"editor\";\r\n params.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\r\n params.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\r\n params.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\r\n \r\n params.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\r\n\r\n valueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\r\n\r\n if(!valueCheck){\r\n console.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\")\r\n }else if(valueCheck > 1){\r\n console.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\")\r\n }\r\n \r\n if(params.autocomplete){\r\n if(params.multiselect){\r\n params.multiselect = false;\r\n console.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\")\r\n }\r\n }else{\r\n if(params.freetext){\r\n params.freetext = false;\r\n console.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.filterFunc){\r\n params.filterFunc = false;\r\n console.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.filterRemote){\r\n params.filterRemote = false;\r\n console.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.mask){\r\n params.mask = false;\r\n console.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.allowEmpty){\r\n params.allowEmpty = false;\r\n console.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.listOnEmpty){\r\n params.listOnEmpty = false;\r\n console.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\r\n }\r\n }\r\n \r\n if(params.filterRemote && !(typeof params.valuesLookup === \"function\" || typeof params.valuesURL)){\r\n params.filterRemote = false;\r\n console.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\r\n }\r\n return params;\r\n }\r\n //////////////////////////////////////\r\n ////////// Event Handling ////////////\r\n //////////////////////////////////////\r\n \r\n _bindInputEvents(input){\r\n input.addEventListener(\"focus\", this._inputFocus.bind(this))\r\n input.addEventListener(\"click\", this._inputClick.bind(this))\r\n input.addEventListener(\"blur\", this._inputBlur.bind(this))\r\n input.addEventListener(\"keydown\", this._inputKeyDown.bind(this))\r\n input.addEventListener(\"search\", this._inputSearch.bind(this))\r\n \r\n if(this.params.autocomplete){\r\n input.addEventListener(\"keyup\", this._inputKeyUp.bind(this))\r\n }\r\n }\r\n \r\n \r\n _inputFocus(e){\r\n this.rebuildOptionsList();\r\n }\r\n \r\n _filter(){\r\n if(this.params.filterRemote){\r\n clearTimeout(this.filterTimeout);\r\n \r\n this.filterTimeout = setTimeout(() => {\r\n this.rebuildOptionsList();\r\n }, this.params.filterDelay);\r\n }else{\r\n this._filterList();\r\n }\r\n }\r\n \r\n _inputClick(e){\r\n e.stopPropagation();\r\n }\r\n \r\n _inputBlur(e){\r\n if(this.blurable && this.popup){\r\n this.popup.hide();\r\n }\r\n }\r\n \r\n _inputSearch(){\r\n this._clearChoices();\r\n }\r\n \r\n _inputKeyDown(e){\r\n switch(e.keyCode){\r\n \r\n case 38: //up arrow\r\n this._keyUp(e);\r\n break\r\n \r\n case 40: //down arrow\r\n this._keyDown(e);\r\n break;\r\n \r\n case 37: //left arrow\r\n case 39: //right arrow\r\n this._keySide(e);\r\n break;\r\n \r\n case 13: //enter\r\n this._keyEnter();\r\n break;\r\n \r\n case 27: //escape\r\n this._keyEsc();\r\n break;\r\n \r\n case 36: //home\r\n case 35: //end\r\n this._keyHomeEnd(e);\r\n break;\r\n \r\n case 9: //tab\r\n break;\r\n \r\n default:\r\n this._keySelectLetter(e);\r\n }\r\n }\r\n \r\n _inputKeyUp(e){\r\n switch(e.keyCode){\r\n case 38: //up arrow\r\n case 37: //left arrow\r\n case 39: //up arrow\r\n case 40: //right arrow\r\n case 13: //enter\r\n case 27: //escape\r\n break;\r\n \r\n default:\r\n this._keyAutoCompLetter(e);\r\n }\r\n }\r\n \r\n _preventBlur(){\r\n this.blurable = false;\r\n \r\n setTimeout(function(){\r\n this.blurable = true;\r\n }, 10);\r\n }\r\n \r\n //////////////////////////////////////\r\n //////// Keyboard Navigation /////////\r\n //////////////////////////////////////\r\n \r\n _keyUp(e){\r\n var index = this.displayItems.indexOf(this.focusedItem);\r\n \r\n if(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n \r\n if(index > 0){\r\n this._focusItem(this.displayItems[index - 1]);\r\n }\r\n }\r\n }\r\n \r\n _keyDown(e){\r\n var index = this.displayItems.indexOf(this.focusedItem);\r\n \r\n if(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n \r\n if(index < this.displayItems.length - 1){\r\n if(index == -1){\r\n this._focusItem(this.displayItems[0]);\r\n }else{\r\n this._focusItem(this.displayItems[index + 1]);\r\n }\r\n }\r\n }\r\n }\r\n \r\n _keySide(e){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n \r\n _keyEnter(e){\r\n if(this.focusedItem){\r\n this._chooseItem(this.focusedItem);\r\n }else{\r\n this._cancel();\r\n }\r\n }\r\n \r\n _keyEsc(e){\r\n this._cancel();\r\n }\r\n \r\n _keyHomeEnd(e){\r\n if(this.params.autocomplete){\r\n //prevent table navigation while using input element\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n \r\n _keySelectLetter(e){\r\n if(!this.params.autocomplete){\r\n // if(this.edit.currentCell === false){\r\n e.preventDefault();\r\n // }\r\n \r\n if(e.keyCode >= 38 && e.keyCode <= 90){\r\n this._scrollToValue(e.keyCode);\r\n }\r\n }\r\n }\r\n \r\n _keyAutoCompLetter(e){\r\n this._filter();\r\n this.typing = true;\r\n }\r\n \r\n \r\n _scrollToValue(char){\r\n clearTimeout(this.filterTimeout);\r\n \r\n var character = String.fromCharCode(char).toLowerCase();\r\n this.filterTerm += character.toLowerCase();\r\n \r\n var match = this.displayItems.find((item) => {\r\n return typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\r\n });\r\n \r\n if(match){\r\n this._focusItem(match);\r\n }\r\n \r\n this.filterTimeout = setTimeout(() => {\r\n this.filterTerm = \"\";\r\n }, 800)\r\n }\r\n \r\n _focusItem(item){\r\n if(this.focusedItem && this.focusedItem.element){\r\n this.focusedItem.element.classList.remove(\"focused\");\r\n }\r\n \r\n this.focusedItem = item;\r\n \r\n if(item && item.element){\r\n item.element.classList.add(\"focused\");\r\n item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n }\r\n }\r\n \r\n \r\n //////////////////////////////////////\r\n /////// Data List Generation /////////\r\n //////////////////////////////////////\r\n headerFilterInitialListGen(){\r\n this._generateOptions(true);\r\n }\r\n \r\n rebuildOptionsList(){\r\n this._generateOptions()\r\n .then(this._sortOptions.bind(this))\r\n .then(this._buildList.bind(this))\r\n .then(this._showList.bind(this))\r\n .catch((e) => {\r\n if(!Number.isInteger(e)){\r\n console.error(\"List generation error\", e);\r\n }\r\n })\r\n }\r\n \r\n _filterList(){\r\n this._buildList(this._filterOptions());\r\n this._showList();\r\n }\r\n \r\n _generateOptions(silent){\r\n var values = [];\r\n var itteration = ++ this.listIteration;\r\n \r\n this.filtered = false;\r\n \r\n if(this.params.values){\r\n values = this.params.values;\r\n }else if (this.params.valuesURL){\r\n values = this._ajaxRequest(this.params.valuesURL, this.input.value);\r\n }else{\r\n if(typeof this.params.valuesLookup === \"function\"){\r\n values = this.params.valuesLookup(cell, this.input.value);\r\n }else if(this.params.valuesLookup){\r\n values = this._uniqueColumnValues(this.params.valuesLookupField);\r\n }\r\n }\r\n \r\n if(values instanceof Promise){\r\n if(!silent){\r\n this._addPlaceholder(this.params.placeholderLoading);\r\n }\r\n \r\n return values.then()\r\n .then((responseValues) => {\r\n if(this.listIteration === itteration){\r\n return this._parseList(responseValues);\r\n }else{\r\n return Promise.reject(itteration);\r\n }\r\n });\r\n }else{\r\n return Promise.resolve(this._parseList(values))\r\n }\r\n }\r\n \r\n _addPlaceholder(contents){\r\n var placeholder = document.createElement(\"div\");\r\n \r\n if(typeof contents === \"function\"){\r\n contents = contents(cell.getComponent(), this.listEl);\r\n }\r\n \r\n if(contents){\r\n this._clearList();\r\n \r\n if(contents instanceof HTMLElement){\r\n placeholder = contents;\r\n }else{\r\n placeholder.classList.add(\"tabulator-edit-list-placeholder\")\r\n placeholder.innerHTML = contents;\r\n }\r\n \r\n this.listEl.appendChild(placeholder);\r\n \r\n this._showList();\r\n }\r\n }\r\n \r\n _ajaxRequest(url, term){\r\n var params = this.params.filterRemote ? {term:term} : {};\r\n url = urlBuilder(url, {}, params);\r\n \r\n return fetch(url)\r\n .then((response)=>{\r\n if(response.ok) {\r\n return response.json()\r\n .catch((error)=>{\r\n console.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\r\n return Promise.reject(error);\r\n });\r\n }else{\r\n console.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n return Promise.reject(response);\r\n }\r\n })\r\n .catch((error)=>{\r\n console.error(\"List Ajax Load Error - Connection Error: \", error);\r\n return Promise.reject(error);\r\n });\r\n }\r\n \r\n _uniqueColumnValues(field){\r\n var output = {},\r\n data = this.table.getData(this.params.valuesLookup),\r\n column;\r\n \r\n if(field){\r\n column = this.table.columnManager.getColumnByField(field);\r\n }else{\r\n column = this.cell.getColumn()._getSelf();\r\n }\r\n \r\n if(column){\r\n data.forEach((row) => {\r\n var val = column.getFieldValue(row);\r\n \r\n if(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n output[val] = true;\r\n }\r\n });\r\n }else{\r\n console.warn(\"unable to find matching column to create select lookup list:\", field);\r\n output = [];\r\n }\r\n \r\n return Object.keys(output);\r\n }\r\n \r\n \r\n _parseList(inputValues){\r\n var data = [];\r\n \r\n if(!Array.isArray(inputValues)){\r\n inputValues = Object.entries(inputValues).map(([key, value]) => {\r\n return {\r\n label:value,\r\n value:key,\r\n };\r\n });\r\n }\r\n \r\n inputValues.forEach((value) => {\r\n if(typeof value !== \"object\"){\r\n value = {\r\n label:value,\r\n value:value,\r\n };\r\n }\r\n \r\n this._parseListItem(value, data, 0);\r\n });\r\n \r\n this.data = data;\r\n \r\n return data; \r\n }\r\n \r\n _parseListItem(option, data, level){\r\n var item = {};\r\n \r\n if(option.options){\r\n item = this._parseListGroup(option, level + 1);\r\n }else{\r\n item = {\r\n label:option.label,\r\n value:option.value,\r\n itemParams:option.itemParams,\r\n elementAttributes: option.elementAttributes,\r\n element:false,\r\n selected:false,\r\n visible:true,\r\n level:level,\r\n original:option,\r\n };\r\n \r\n if(this.initialValues && this.initialValues.indexOf(option.value) > -1){\r\n this._chooseItem(item, true);\r\n }\r\n }\r\n \r\n data.push(item);\r\n }\r\n \r\n _parseListGroup(option, level){\r\n var item = {\r\n label:option.label,\r\n group:true,\r\n itemParams:option.itemParams,\r\n elementAttributes:option.elementAttributes,\r\n element:false,\r\n visible:true,\r\n level:level,\r\n options:[],\r\n original:option,\r\n };\r\n \r\n option.options.forEach((child) => {\r\n this._parseListItem(child, item.options, level);\r\n });\r\n \r\n return item;\r\n }\r\n \r\n _sortOptions(options){\r\n var sorter;\r\n \r\n if(this.params.sort){\r\n sorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\r\n \r\n this._sortGroup(sorter, options);\r\n }\r\n \r\n return options;\r\n }\r\n \r\n _sortGroup(sorter, options){\r\n options.sort((a,b) => {\r\n return sorter(a.label, b.label, a.value, b.value, a.original, b.original);\r\n });\r\n \r\n options.forEach((option) => {\r\n if(option.group){\r\n this._sortGroup(sorter, option.options);\r\n }\r\n })\r\n }\r\n \r\n _defaultSortFunction(as, bs){\r\n var a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n var emptyAlign = 0;\r\n \r\n if(this.params.sort === \"desc\"){\r\n [as, bs] = [bs, as];\r\n }\r\n \r\n //handle empty values\r\n if(!as && as!== 0){\r\n emptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n }else if(!bs && bs!== 0){\r\n emptyAlign = 1;\r\n }else{\r\n if(isFinite(as) && isFinite(bs)) return as - bs;\r\n a = String(as).toLowerCase();\r\n b = String(bs).toLowerCase();\r\n if(a === b) return 0;\r\n if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n a = a.match(rx);\r\n b = b.match(rx);\r\n L = a.length > b.length ? b.length : a.length;\r\n while(i < L){\r\n a1= a[i];\r\n b1= b[i++];\r\n if(a1 !== b1){\r\n if(isFinite(a1) && isFinite(b1)){\r\n if(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n if(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n return a1 - b1;\r\n }\r\n else return a1 > b1 ? 1 : -1;\r\n }\r\n }\r\n \r\n return a.length > b.length;\r\n }\r\n \r\n return emptyAlign;\r\n }\r\n \r\n _filterOptions(){\r\n var filterFunc = this.params.filterFunc || this._defaultFilterFunc;\r\n var term = this.input.value;\r\n var results = [];\r\n \r\n if(term){\r\n this.filtered = true;\r\n \r\n this.data.forEach((item) => {\r\n this._filterItem(filterFunc, term, item);\r\n });\r\n }else{\r\n this.filtered = false;\r\n }\r\n \r\n return this.data;\r\n }\r\n \r\n _filterItem(func, term, item){\r\n var matches = false;\r\n \r\n if(!item.group){\r\n item.visible = func(term, item.label, item.value, item.original);\r\n }else{\r\n item.options.forEach((option) => {\r\n if(this._filterItem(func, term, option)){\r\n matches = true;\r\n }\r\n });\r\n \r\n item.visible = matches;\r\n }\r\n \r\n return item.visible;\r\n }\r\n \r\n _defaultFilterFunc(term, label, value, item){\r\n var term = String(term).toLowerCase();\r\n \r\n if(label !== null || typeof label !== \"undefined\"){\r\n if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase(term).indexOf() > -1){\r\n return true;\r\n }\r\n }\r\n \r\n return false;\r\n }\r\n \r\n //////////////////////////////////////\r\n /////////// Display List /////////////\r\n //////////////////////////////////////\r\n \r\n _clearList(){\r\n while(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\r\n \r\n this.displayItems = [];\r\n }\r\n \r\n _buildList(data){\r\n this._clearList();\r\n \r\n data.forEach((option) => {\r\n this._buildItem(option);\r\n });\r\n \r\n if(!this.displayItems.length){\r\n this._addPlaceholder(this.params.placeholderEmpty);\r\n } \r\n }\r\n \r\n _buildItem(item){\r\n var el = item.element,\r\n contents;\r\n \r\n if(!this.filtered || item.visible){\r\n \r\n if(!el){\r\n el = document.createElement(\"div\");\r\n el.tabIndex = 0;\r\n \r\n contents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\r\n \r\n if(contents instanceof HTMLElement){\r\n el.appendChild(contents)\r\n }else{\r\n el.innerHTML = contents;\r\n }\r\n \r\n if(item.group){\r\n el.classList.add(\"tabulator-edit-list-group\");\r\n }else{\r\n el.classList.add(\"tabulator-edit-list-item\");\r\n }\r\n \r\n el.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\r\n \r\n if(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n for (let key in item.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n el.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n }else{\r\n el.setAttribute(key, item.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n \r\n if(item.group){\r\n el.addEventListener(\"click\", this._groupClick.bind(this, item));\r\n }else{\r\n el.addEventListener(\"click\", this._itemClick.bind(this, item));\r\n }\r\n \r\n el.addEventListener(\"mousedown\", this._preventBlur.bind(this));\r\n \r\n item.element = el;\r\n }\r\n \r\n this._styleItem(item);\r\n \r\n this.listEl.appendChild(el);\r\n \r\n if(item.group){\r\n item.options.forEach((option) => {\r\n this._buildItem(option);\r\n });\r\n }else{\r\n this.displayItems.push(item);\r\n }\r\n }\r\n }\r\n \r\n _showList(){\r\n var startVis = this.popup && this.popup.isVisible();\r\n \r\n if(this.input.parentNode){\r\n if(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\r\n if(this.popup){\r\n this.popup.hide(true);\r\n return;\r\n }\r\n }\r\n \r\n this._setListWidth();\r\n \r\n if(!this.popup){\r\n this.popup = this.edit.popup(this.listEl);\r\n }\r\n \r\n this.popup.show(this.cell.getElement(), \"bottom\")\r\n \r\n if(!startVis){\r\n this.popup.hideOnBlur(this._resolveValue.bind(this, true));\r\n }\r\n }\r\n }\r\n \r\n _styleItem(item){\r\n if(item && item.element){\r\n if(item.selected){\r\n item.element.classList.add(\"active\");\r\n }else{\r\n item.element.classList.remove(\"active\");\r\n }\r\n }\r\n }\r\n \r\n //////////////////////////////////////\r\n ///////// User Interaction ///////////\r\n //////////////////////////////////////\r\n \r\n _itemClick(item, e){\r\n e.stopPropagation();\r\n \r\n this._chooseItem(item);\r\n }\r\n \r\n _groupClick(item, e){\r\n e.stopPropagation();\r\n }\r\n \r\n \r\n //////////////////////////////////////\r\n ////// Current Item Management ///////\r\n //////////////////////////////////////\r\n \r\n _cancel(){\r\n this.popup.hide(true);\r\n this.actions.cancel();\r\n }\r\n \r\n _clearChoices(){\r\n this.typing = true;\r\n \r\n this.currentItems.forEach((item) => {\r\n item.selected = false;\r\n this._styleItem(item);\r\n });\r\n \r\n this.currentItems = [];\r\n \r\n this.focusedItem = null;\r\n }\r\n \r\n _chooseItem(item, silent){\r\n var index;\r\n \r\n this.typing = false;\r\n \r\n if(this.params.multiselect){\r\n index = this.currentItems.indexOf(item);\r\n \r\n if(index > -1){\r\n this.currentItems.splice(index, 1);\r\n item.selected = false;\r\n }else{\r\n this.currentItems.push(item);\r\n item.selected = true;\r\n }\r\n \r\n this.input.value = this.currentItems.map(item => item.label).join(\",\");\r\n \r\n this._styleItem(item);\r\n \r\n }else{\r\n this.currentItems = [item];\r\n item.selected = true;\r\n \r\n this.input.value = item.label;\r\n \r\n this._styleItem(item);\r\n \r\n if(!silent){\r\n this._resolveValue();\r\n }\r\n }\r\n \r\n this._focusItem(item);\r\n }\r\n \r\n _resolveValue(blur){\r\n var output, initialValue;\r\n \r\n this.popup.hide(true);\r\n \r\n if(this.params.multiselect){\r\n output = this.currentItems.map(item => item.value);\r\n }else{\r\n if(blur && this.params.autocomplete && this.typing){\r\n if(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\r\n output = this.input.value;\r\n }else{\r\n this.actions.cancel();\r\n return;\r\n }\r\n }else{\r\n if(this.currentItems[0]){\r\n output = this.currentItems[0].value;\r\n }else{\r\n initialValue = this.initialValues[0];\r\n \r\n if(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\r\n output = initialValue;\r\n }else{\r\n output = this.params.emptyValue;\r\n }\r\n }\r\n \r\n }\r\n }\r\n \r\n if(output === \"\"){\r\n output = this.params.emptyValue;\r\n }\r\n \r\n this.actions.success(output);\r\n \r\n if(this.isFilter){\r\n this.initialValues = output && !Array.isArray[output] ? [output] : output;\r\n }\r\n }\r\n \r\n}","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\r\n\t console.warn(\"The select editor has been deprecated, please use the new list editor\");\r\n\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\r\n\tconsole.warn(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\r\n\r\n\teditorParams.autocomplete = true;\r\n\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false,\r\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\r\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tvar checkedValue = input.checked;\r\n\r\n\t\tif(trueValueSet && checkedValue){\r\n\t\t\tcheckedValue = editorParams.trueValue;\r\n\t\t}else if(falseValueSet && !checkedValue){\r\n\t\t\tcheckedValue = editorParams.falseValue;\r\n\t\t}else{\r\n\t\t\tcheckedValue = checkedValue;\r\n\t\t}\r\n\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn checkedValue;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn checkedValue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn checkedValue;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport list from './editors/list.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tlist:list,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(cell, e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.table.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(cell = this.currentCell, e){\r\n\t\tvar nextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(cell = this.currentCell, e){\r\n\t\tvar nextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successful value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\treturn valid === true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;\r\n","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\r\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\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\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\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\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\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\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.styleCells[index] || styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.styleCells[index] || styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\t\tthis.tableInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.tableInitialized = true;\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\tcolumn.modules.filter.value = initialValue;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\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);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft + parseInt(this.table.columnManager.element.style.marginLeft);\r\n\r\n\t\t\t\t\tif(left !== headerPos){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.tableInitialized){\r\n\t\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\t\tthis.reloadData();\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tsign = \"\",\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tif(floatVal < 0){\r\n\t\tfloatVal = Math.abs(floatVal);\r\n\t\tsign = negativeSign;\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\tif (formatterParams.thousand !== false) {\r\n\t\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\t\twhile (rgx.test(integer)){\r\n\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t\t}\r\n\t}\r\n\r\n\treturn after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tfunction labelTraverse(path, data){\r\n\t\tvar item = path.shift(),\r\n\t\tvalue = data[item];\r\n\t\t\r\n\t\tif(path.length && typeof value === \"object\"){\r\n\t\t\treturn labelTraverse(path, value);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime;\r\n\r\n\t\tif(DT.isDateTime(value)){\r\n\t\t\t newDatetime = value;\r\n\t\t }else if(inputFormat === \"iso\"){\r\n\t\t\t newDatetime = DT.fromISO(String(value));\r\n\t\t }else{\r\n\t\t\t newDatetime = DT.fromFormat(String(value), inputFormat);\r\n\t\t }\r\n\r\n\t\tif(newDatetime.isValid){\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\t\t\tif(invalid === true || !value){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime;\r\n\r\n\t\tif(DT.isDateTime(value)){\r\n\t\t\t newDatetime = value;\r\n\t\t }else if(inputFormat === \"iso\"){\r\n\t\t\t newDatetime = DT.fromISO(String(value));\r\n\t\t }else{\r\n\t\t\t newDatetime = DT.fromFormat(String(value), inputFormat);\r\n\t\t }\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1 || \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\tvar blocked = false;\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\r\n\t\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\t\tif(!blocked){\r\n\t\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tblocked = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\tblocked = true;\r\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\t\tthis.blocked = true;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\t\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\r\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.reinitializeColumns.bind(this));\r\n\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\r\n\t}\r\n\t\r\n\tblockLayout(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\t\r\n\tunblockLayout(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n\t\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\r\n\treinitializeColumns(){\r\n\t\tthis.reset();\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\t\t\r\n\t\tif(!column.isGroup){\r\n\t\t\t\r\n\t\t\tif(this.frozenCheck(column)){\r\n\t\t\t\t\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\t\t\t\t\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.active = true;\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfrozenCheck(column){\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\t\t\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\t\t\t\r\n\t\t\tthis.calcMargins(true);\r\n\t\t\t\r\n\t\t\tthis.layoutColumnPosition();\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t//calculate margins for rows\r\n\tcalcMargins(scroll){\r\n\t\t\r\n\t\tif(!scroll){\r\n\t\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\t\t\t\r\n\t\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\t\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\t\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\t\tvar leftParents = [];\r\n\t\t\r\n\t\tvar leftMargin = 0;\r\n\t\tvar rightMargin = 0;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\t\r\n\t\t\tcolumn.modules.frozen.margin = (leftMargin + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tleftMargin += column.getWidth();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\trightMargin += column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - rightMargin) + \"px\";\r\n\t\t\t\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\t\r\n\t//layout columns appropriately\r\n\tlayout(){\r\n\t\tvar visibleRows = [],\r\n\t\totherRows = [];\r\n\r\n\t\tif(this.active && !this.blocked){\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition();\r\n\r\n\t\t\tvisibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t\totherRows = this.table.rowManager.getDisplayRows().filter(row => !visibleRows.includes(row));\r\n\r\n\t\t\totherRows.forEach((row) =>{\r\n\t\t\t\trow.deinitialize();\r\n\t\t\t});\r\n\r\n\t\t\tvisibleRows.forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutRow(row){\r\n\t\t// console.trace(\"row\")\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\t\t\r\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\r\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\r\n\t\t}\r\n\t\t\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tlayoutElement(element, column){\r\n\t\t\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\t\t\t\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\t\t\t\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\t\t\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trows.push(row);\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\t\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.element = false;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\t\t\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\t\t\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\tif(row.modules){\r\n\t\t\t\t\tdelete row.modules.group;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.arrowElement = false;\r\n\t\tthis.elementContents = false;\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\t\t\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\taddBindings(){\r\n\t\tvar toggleElement;\r\n\t\t\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\t\t\t\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\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);\r\n\t\t\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\t\r\n\t_addRowToGroup(row){\r\n\t\t\r\n\t\tvar level = this.level + 1;\r\n\t\t\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\t\t\t\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\t\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\t\t\r\n\t\trow.updateData(data);\r\n\t\t\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\t\t\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\trow.modules.group = this;\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\t\r\n\tscrollHeader(left){\r\n\t\tif(this.arrowElement){\r\n\t\t\tthis.arrowElement.style.marginLeft = left;\r\n\t\t\t\r\n\t\t\tthis.groupList.forEach(function(child){\r\n\t\t\t\tchild.scrollHeader(left);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowIndex(row){}\r\n\t\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\t\t\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\t\t\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\t\t\t\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\t\t\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\t\t\t\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\toutput.push(this);\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\t\t\t\t\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\t\t\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\t\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\t\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\t\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tvar prev = this.generateElement();\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\t\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tif(typeof this.visible == \"function\"){\r\n\t\t\t\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\t\t\t\t\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\t\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\t\r\n\t////////////// Standard Row Functions //////////////\r\n\t\r\n\tgetElement(){\r\n\t\treturn this.elementContents ? this.element : this.generateElement();\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.addBindings = false;\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\t\t\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\t// this.addBindings();\r\n\t\t\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\t\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\t\t\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\t\r\n\treinitializeHeight(){}\r\n\t\r\n\tcalcHeight(){}\r\n\t\r\n\tsetCellHeight(){}\r\n\t\r\n\tclearCellHeight(){}\r\n\t\r\n\tdeinitializeHeight(){}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureGroupSetup(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.initialize();\r\n\t\t}else{\r\n\t\t\tthis.configureGroupSetup();\r\n\t\t}\r\n\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.configureGroupSetup();\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\r\n\r\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList = [];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Row from '../../core/row/Row.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","import Module from '../../core/Module.js';\r\nimport Column from '../../core/column/Column.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\r\n\t\t\tif(this.table.originalElement.childNodes.length){\r\n\t\t\t\tthis.parseTable();\r\n\t\t\t}else{\r\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.\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.originalElement,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for Tabulator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for Tabulator inline options\r\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","function csvImporter(input){\r\n var data = [],\r\n row = 0, \r\n col = 0,\r\n inQuote = false;\r\n \r\n //Iterate over each character\r\n for (let index = 0; index < input.length; index++) {\r\n let char = input[index], \r\n nextChar = input[index+1]; \r\n \r\n //Initialize empty row\r\n if(!data[row]){\r\n data[row] = [];\r\n }\r\n\r\n //Initialize empty column\r\n if(!data[row][col]){\r\n data[row][col] = \"\";\r\n }\r\n \r\n //Handle quotation mark inside string\r\n if (char == '\"' && inQuote && nextChar == '\"') { \r\n data[row][col] += char; \r\n index++;\r\n continue; \r\n }\r\n \r\n //Begin / End Quote\r\n if (char == '\"') { \r\n inQuote = !inQuote;\r\n continue;\r\n }\r\n \r\n //Next column (if not in quote)\r\n if (char == ',' && !inQuote) { \r\n col++;\r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CRLF) \r\n if (char == '\\r' && nextChar == '\\n' && !inQuote) { \r\n col = 0; \r\n row++; \r\n index++; \r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CR or LF) \r\n if ((char == '\\r' || char == '\\n') && !inQuote) { \r\n col = 0;\r\n row++;\r\n continue; \r\n }\r\n\r\n //Normal Character, append to column\r\n data[row][col] += char;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport default csvImporter;","export default function(input){\r\n try {\r\n return JSON.parse(input);\r\n } catch(e) {\r\n console.warn(\"JSON Import Error - File contents is invalid JSON\", e);\r\n return Promise.reject();\r\n }\r\n}","import csv from './importers/csv.js';\r\nimport json from './importers/json.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultImporters from './defaults/importers.js';\r\n\r\nclass Import extends Module{\r\n \r\n constructor(table){\r\n super(table);\r\n \r\n this.registerTableOption(\"importFormat\");\r\n this.registerTableOption(\"importReader\", \"text\");\r\n }\r\n \r\n initialize(){\r\n this.registerTableFunction(\"import\", this.importFromFile.bind(this));\r\n\r\n if(this.table.options.importFormat){\r\n this.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\r\n this.subscribe(\"data-load\", this.loadData.bind(this), 10);\r\n }\r\n }\r\n\r\n loadDataCheck(data){\r\n return typeof data === \"string\";\r\n }\r\n\r\n loadData(data, params, config, silent, previousData){\r\n return this.importData(this.lookupImporter(), data)\r\n .then(this.structureData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import data\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n\r\n lookupImporter(importFormat){\r\n var importer;\r\n \r\n if(!importFormat){\r\n importFormat = this.table.options.importFormat;\r\n }\r\n \r\n if(typeof importFormat === \"string\"){\r\n importer = Import.importers[importFormat];\r\n }else{\r\n importer = importFormat;\r\n }\r\n\r\n if(!importer){\r\n console.error(\"Import Error - Importer not found:\", importFormat);\r\n }\r\n \r\n return importer;\r\n }\r\n \r\n importFromFile(importFormat, extension){\r\n var importer = this.lookupImporter(importFormat);\r\n \r\n if(importer){\r\n return this.pickFile(extension)\r\n .then(this.importData.bind(this, importer))\r\n .then(this.structureData.bind(this))\r\n .then(this.setData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import file\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n }\r\n \r\n pickFile(extensions){\r\n return new Promise((resolve, reject) => {\r\n var input = document.createElement(\"input\");\r\n input.type = \"file\";\r\n input.accept = extensions;\r\n \r\n input.addEventListener(\"change\", (e) => {\r\n var file = input.files[0],\r\n reader = new FileReader(),\r\n data;\r\n \r\n switch(this.table.options.importReader){\r\n case \"buffer\":\r\n reader.readAsArrayBuffer(file);\r\n break;\r\n\r\n case \"binary\":\r\n reader.readAsBinaryString(file);\r\n break;\r\n\r\n case \"url\":\r\n reader.readAsDataURL(file);\r\n break;\r\n\r\n case \"text\":\r\n default:\r\n reader.readAsText(file);\r\n }\r\n \r\n reader.onload = (e) => {\r\n resolve(reader.result)\r\n };\r\n \r\n reader.onerror = (e) => {\r\n console.warn(\"File Load Error - Unable to read file\");\r\n reject();\r\n };\r\n });\r\n \r\n input.click();\r\n });\r\n }\r\n \r\n importData(importer, fileContents){\r\n var data = importer.call(this.table, fileContents);\r\n \r\n if(data instanceof Promise){\r\n return data;\r\n }else{\r\n return data ? Promise.resolve(data) : Promise.reject();\r\n }\r\n }\r\n\r\n structureData(parsedData){\r\n var data = [];\r\n \r\n if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\r\n if(this.table.options.autoColumns){\r\n data = this.structureArrayToObject(parsedData);\r\n }else{\r\n data = this.structureArrayToColumns(parsedData);\r\n }\r\n\r\n return data;\r\n }else{\r\n return parsedData;\r\n }\r\n }\r\n\r\n structureArrayToObject(parsedData){\r\n var columns = parsedData.shift();\r\n\r\n var data = parsedData.map((values) => {\r\n var row = {};\r\n\r\n columns.forEach((key, i) => {\r\n row[key] = values[i];\r\n })\r\n\r\n return row;\r\n })\r\n\r\n return data;\r\n }\r\n\r\n structureArrayToColumns(parsedData){\r\n var data = [],\r\n columns = this.table.getColumns();\r\n\r\n //remove first row if it is the column names\r\n if(columns[0] && parsedData[0][0]){\r\n if(columns[0].getDefinition().title === parsedData[0][0]){\r\n parsedData.shift();\r\n }\r\n }\r\n \r\n //convert row arrays to objects\r\n parsedData.forEach((rowData) => {\r\n var row = {};\r\n\r\n rowData.forEach((value, index) => {\r\n var column = columns[index];\r\n\r\n if(column){\r\n row[column.getField()] = value;\r\n }\r\n })\r\n\r\n data.push(row);\r\n });\r\n\r\n return data;\r\n }\r\n \r\n setData(data){\r\n return this.table.setData(data);\r\n }\r\n}\r\n\r\nImport.moduleName = \"import\";\r\n\r\n//load defaults\r\nImport.importers = defaultImporters;\r\n\r\nexport default Import;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tgroup:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\r\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\r\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 89\"],\r\n};","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings)\r\n\t\t\tObject.assign(mergedBindings, bindings)\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tbindingList.forEach((item) => {\r\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\r\n\t\t\t\t\t\t});\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","import Module from '../../core/Module.js';\r\n\r\nclass Menu extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.menuContainer = null;\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\t\r\n\t\tthis.currentComponent = null;\r\n\t\tthis.rootPopup = null;\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\r\n\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerClickMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t\t\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.deprecationCheck();\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\r\n\tdeprecationCheck(){\r\n\t\tif(typeof this.table.options.menuContainer !== \"undefined\"){\r\n\t\t\tconsole.warn(\"Use of the menuContainer option is now deprecated. Please use the popupContainer option instead\");\r\n\r\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\r\n\t\t}\r\n\t}\t\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextMenu\", \"headerClickMenu\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\r\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\r\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerMenu){\r\n\t\t\tthis.initializeColumnHeaderMenu(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\r\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\r\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderMenu(column){\r\n\t\tvar icon = column.definition.headerMenuIcon,\r\n\t\theaderMenuEl;\r\n\t\t\r\n\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\r\n\r\n\t\tif(icon){\r\n\t\t\tif(typeof icon === \"function\"){\r\n\t\t\t\ticon = icon(column.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tif(icon instanceof HTMLElement){\r\n\t\t\t\theaderMenuEl.appendChild(icon);\r\n\t\t\t}else{\r\n\t\t\t\theaderMenuEl.innerHTML = icon;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\t\t}\r\n\t\t\r\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadMenuTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuEvent(menu, e, component){\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\r\n\t\t\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\t\r\n\tloadMenu(e, component, menu, parentEl, parentPopup){\r\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\r\n\t\tmenuEl = document.createElement(\"div\"),\r\n\t\tpopup;\r\n\t\t\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\t\t\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.rootPopup){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.rootPopup){\r\n\t\t\t\tthis.rootPopup.hide();\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tpopup = parentPopup.child(menuEl);\r\n\t\t}\r\n\t\t\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\t\t\t\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\t\t\t\t\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\t\t\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.rootPopup.hide();\r\n\t\t});\r\n\t\t\r\n\t\tpopup.show(parentEl || e);\r\n\t\t\r\n\t\tif(popup === this.rootPopup){\r\n\t\t\tthis.rootPopup.hideOnBlur(() => {\r\n\t\t\t\tthis.rootPopup = null;\r\n\t\t\t\t\r\n\t\t\t\tif(this.currentComponent){\r\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\r\n\t\t\t\t\tthis.currentComponent = null;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.currentComponent = component;\r\n\r\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent())\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\t\t\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\t\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\t\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableColumns){\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\t\t\r\n\t\tif(!column.modules.frozen){\r\n\t\t\tcolEl = column.getElement();\r\n\t\t\t\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\t\t\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\t\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\t\t\t\t\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\t\t\t\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\t\t\t\t\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\t\t\t\t\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement(),\r\n\t\theaderElement = this.table.columnManager.getElement(),\r\n\t\theadersElement = this.table.columnManager.getHeadersElement();\r\n\t\t\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\t\t\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\t\t\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\t\t\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\t\t\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\t\t\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\r\n\t\t\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\t\t\t\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\t\t\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\t\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\t\t\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\t\t\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\t\t\t\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\t\t\t\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\t\t\t\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\t\t\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\t\t\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"mutateLink\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tmutateLink(cell){\r\n\t\tvar links = cell.column.definition.mutateLink;\r\n\r\n\t\tif(links){\r\n\t\t\tif(!Array.isArray(links)){\r\n\t\t\t\tlinks = [links];\r\n\t\t\t}\r\n\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tvar linkCell = cell.row.getCell(link);\r\n\r\n\t\t\t\tif(linkCell){\r\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\tvar el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\r\n\tif(totalRows){\r\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\r\n\t\t\r\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\r\n\t\t\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(ofEl);\r\n\t\tel.appendChild(totalEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}else{\r\n\t\tvalueEl.innerHTML = \" 0 \";\r\n\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}\r\n\t\r\n\treturn el;\r\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\r\n var el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\t\r\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tel.appendChild(showingEl);\r\n\tel.appendChild(valueEl);\r\n\tel.appendChild(ofEl);\r\n\tel.appendChild(totalEl);\r\n\tel.appendChild(rowsEl);\r\n\t\r\n\treturn el;\r\n};","import rows from './pageCounters/rows.js';\r\nimport pages from './pageCounters/pages.js';\r\n\r\n\r\nexport default {\r\n\trows:rows,\r\n\tpages:pages,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPageCounters from './defaults/pageCounters.js';\r\n\r\nclass Page extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\t\t\r\n\t\tthis.element = null;\r\n\t\tthis.pageCounterElement = null;\r\n\t\tthis.pageCounter = null;\r\n\t\t\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.remoteRowCountEstimate = null;\r\n\t\t\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\t\t\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\t\t\r\n\t\tthis.pageSizes = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\r\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\t\t\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\t\t\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\r\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\t\t\t\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePageCounter();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn {index, top}\r\n\t}\r\n\t\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\t\t\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\t\t\t\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\t\t\t\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\t\t\t\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\r\n\t\t\r\n\t\tthis.generatePageSizeSelectList();\r\n\t}\r\n\t\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\t\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\t\t\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn Promise.reject();\r\n\t}\r\n\t\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\t\t\t\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\t\t\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\t\t\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\t\t\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\t\t\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\t\t\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\t\t\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\t\t\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\t\t\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\t\t\t\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\t\t\t\t\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializePageCounter(){\r\n\t\tvar counter = this.table.options.paginationCounter,\r\n\t\tpageCounter = null;\r\n\t\t\r\n\t\tif(counter){\r\n\t\t\tif(typeof counter === \"function\"){\r\n\t\t\t\tpageCounter = counter;\r\n\t\t\t}else{\r\n\t\t\t\tpageCounter = Page.pageCounters[counter];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(pageCounter){\r\n\t\t\t\tthis.pageCounter = pageCounter;\r\n\t\t\t\t\r\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\r\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup pagination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel, paginationCounterHolder;\r\n\t\t\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\t\t\t\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\t\t\t\t\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\t\t\t\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tif(this.table.options.paginationCounter){\r\n\r\n\t\t\t\t\tpaginationCounterHolder \r\n\r\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\r\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\r\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\r\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(paginationCounterHolder){\r\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.footerAppend(this.pageCounterElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.footerAppend(this.element);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\t\t}\r\n\t\t\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\t\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\t\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\t\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\t\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\t\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set the maximum page\r\n\tsetMaxPage(max){\r\n\t\t\r\n\t\tmax = parseInt(max);\r\n\t\t\r\n\t\tthis.max = max || 1;\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t\r\n\t\tpage = parseInt(page);\r\n\t\t\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\t\t\t\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\t\t\r\n\t\tthis.trackChanges();\r\n\t}\r\n\t\r\n\t_setPageCounter(totalRows, size, currentRow){\r\n\t\tvar content;\r\n\t\t\r\n\t\tif(this.pageCounter){\r\n\r\n\t\t\tif(this.mode === \"remote\"){\r\n\t\t\t\tsize = this.size;\r\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\r\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\r\n\t\t\t}\r\n\r\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\r\n\t\t\t\r\n\t\t\tswitch(typeof content){\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\tif(content instanceof Node){\r\n\t\t\t\t\t\r\n\t\t\t\t\t//clear previous cell contents\r\n\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageCounterElement.appendChild(content);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(content != null){\r\n\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);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"undefined\":\r\n\t\t\t\tcase \"null\":\r\n\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.pageCounterElement.innerHTML = content;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\t\t\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\t\t\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\t\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\t\t\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\t\t\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\t\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\t\t\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\t\t\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\t\t\r\n\t\treturn button;\r\n\t}\r\n\t\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger()\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\t\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\t\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\t\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\t\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar actualRowPageSize = 0,\r\n\t\toutput, start, end, actualStartRow;\r\n\r\n\t\tvar actualRows = data.filter((row) => {\r\n\t\t\treturn row.type === \"row\";\r\n\t\t});\r\n\t\t\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\t\t\t\r\n\t\t\tthis.setMaxRows(data.length);\r\n\t\t\t\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageButtons();\r\n\t\t\t\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tlet row = data[i];\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\toutput.push(row);\r\n\r\n\t\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\t\tif(!actualStartRow){\r\n\t\t\t\t\t\t\tactualStartRow = row;\r\n\t\t\t\t\t\t}\t\r\n\r\n\t\t\t\t\t\tactualRowPageSize++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\r\n\t\t\t\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\t\t\tthis._setPageCounter(actualRows.length);\r\n\t\t\t\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrigger(){\r\n\t\tvar left;\r\n\t\t\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\t\t\t\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\t\t\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\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));\r\n\t\t\t\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\t\t\t\t\t\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\treturn data.data;\r\n\t}\r\n\t\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.containerElement;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\t\t\t\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\n//load defaults\r\nPage.pageCounters = defaultPageCounters;\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.slice(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.slice(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};\r\n","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.options.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.options.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\nPersistence.moduleInitOrder = -10;\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Popup extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\r\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\r\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\r\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextPopup\");\r\n\t\tthis.registerColumnOption(\"headerClickPopup\");\r\n\t\tthis.registerColumnOption(\"headerPopup\");\r\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\r\n\t\tthis.registerColumnOption(\"contextPopup\");\r\n\t\tthis.registerColumnOption(\"clickPopup\");\r\n\t\t\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextPopup){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickPopup){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextPopup){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickPopup){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextPopup\", \"headerClickPopup\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\r\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\r\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerPopup){\r\n\t\t\tthis.initializeColumnHeaderPopup(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\r\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\r\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderPopup(column){\r\n\t\tvar icon = column.definition.headerPopupIcon,\r\n\t\theaderPopupEl;\r\n\t\t\r\n\t\theaderPopupEl = document.createElement(\"span\");\r\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\r\n\r\n\t\tif(icon){\r\n\t\t\tif(typeof icon === \"function\"){\r\n\t\t\t\ticon = icon(column.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tif(icon instanceof HTMLElement){\r\n\t\t\t\theaderPopupEl.appendChild(icon);\r\n\t\t\t}else{\r\n\t\t\t\theaderPopupEl.innerHTML = icon;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\r\n\t\t}\r\n\t\t\r\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadPopupTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadPopupTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadPopupEvent(contents, e, component){\r\n\t\tvar renderedCallback;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trenderedCallback = callback;\r\n\t\t}\r\n\t\t\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\r\n\t\t\r\n\t\tthis.loadPopup(e, component, contents, renderedCallback);\r\n\t}\r\n\t\r\n\tloadPopup(e, component, contents, renderedCallback){\r\n\t\tvar touch = !(e instanceof MouseEvent),\r\n\t\tcontentsEl, popup;\r\n\t\t\r\n\t\tif(contents instanceof HTMLElement){\r\n\t\t\tcontentsEl = contents;\r\n\t\t}else{\r\n\t\t\tcontentsEl = document.createElement(\"div\");\r\n\t\t\tcontentsEl.innerHTML = contents;\r\n\t\t}\r\n\t\t\r\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\r\n\r\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\tpopup = this.popup(contentsEl);\r\n\r\n\t\tif(typeof renderedCallback === \"function\"){\r\n\t\t\tpopup.renderCallback(renderedCallback);\r\n\t\t}\r\n\t\t\r\n\t\tpopup.show(e).hideOnBlur(() => {\r\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\r\n\t\t});\r\n\r\n\r\n\r\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent())\r\n\t}\r\n}\r\n\r\nPopup.moduleName = \"popup\";\r\n\r\nexport default Popup;\r\n","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar self = this,\r\n\t\tpushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn self.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.latestX = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.initialNextColumn = null;\r\n\t\tthis.nextColumn = null;\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\r\n\t}\r\n\t\r\n\tinitializeEventWatchers(){\r\n\t\tif(!this.initialized){\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\r\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.deInitializeComponent(cell);\r\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutColumnHeader(column){\r\n\t\tif(column.definition.resizable){\r\n\t\t\tthis.initializeEventWatchers();\r\n\t\t\tthis.deInitializeComponent(column);\r\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolumnLayoutUpdated(column){\r\n\t\tvar prev = column.prevColumn();\r\n\t\t\r\n\t\tthis.reinitializeColumn(column);\r\n\t\t\r\n\t\tif(prev){\r\n\t\t\tthis.reinitializeColumn(prev);\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeColumn(column){\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\r\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\r\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(type, component, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable,\r\n\t\tconfig = {},\r\n\t\tnearestColumn = column.getLastColumn();\r\n\t\t\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tconfig = {variableHeight:variableHeight};\r\n\t\t}\r\n\t\t\r\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\r\n\t\t\t\r\n\t\t\tvar handle = document.createElement('span');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tself.startColumn = column;\r\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\r\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//resize column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\r\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\r\n\t\t\t\t\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tnearestColumn.reinitializeWidth(true);\r\n\t\t\t\t\r\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\r\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tconfig.handleEl = handle;\r\n\t\t\t\r\n\t\t\tif(element.parentNode){\r\n\t\t\t\telement.after(handle);\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tcomponent.modules.resize = config;\r\n\t}\r\n\t\r\n\tdeInitializeColumn(column){\r\n\t\tthis.deInitializeComponent(column);\r\n\t\t\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tthis.deInitializeComponent(cell);\r\n\t\t});\r\n\t}\r\n\t\r\n\tdeInitializeComponent(component){\r\n\t\tvar handleEl;\r\n\t\t\r\n\t\tif(component.modules.resize){\r\n\t\t\thandleEl = component.modules.resize.handleEl;\r\n\t\t\t\r\n\t\t\tif(handleEl && handleEl.parentElement){\r\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tresizeHandle(component, height){\r\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\r\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\t\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\t\t\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\tfunction mouseMove(e){\r\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\r\n\t\t\tstartDiff = x - self.startX,\r\n\t\t\tmoveDiff = x - self.latestX,\r\n\t\t\tblockedBefore, blockedAfter;\r\n\r\n\t\t\tself.latestX = x;\r\n\t\t\t\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tstartDiff = -startDiff;\r\n\t\t\t\tmoveDiff = -moveDiff;\r\n\t\t\t}\r\n\r\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\r\n\r\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\r\n\r\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\r\n\r\n\t\t\tif(moveDiff < 0){\r\n\t\t\t\tself.nextColumn = self.initialNextColumn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\r\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\r\n\r\n\t\t\t\tif(moveDiff > 0){\r\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\r\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(self.nextColumn){\r\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\t\t\t\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tfunction mouseUp(e){\r\n\t\t\t\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\t\t\t\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\t\t\t\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(self.startWidth !== column.getWidth()){\r\n\t\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\t\t\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\t\t\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.latestX = self.startX;\r\n\t\tself.startWidth = column.getWidth();\r\n\t\t\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate responsive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//determine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\r\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort((a, b) => {\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initializeResponsivity();\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\t\t\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\t\t\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\r\n\t\t\t\r\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\t\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\t\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\t\t\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\t\t\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\t\t\t\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\t\t\r\n\t\trow.modules.select = {selected:false};\r\n\t\t\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\t\t\t\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\t\r\n\thandleComplexRowClick(row, e){\r\n\t\tif(e.shiftKey){\r\n\t\t\tthis.table._clearSelection();\r\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\r\n\t\t\t\r\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\r\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\r\n\t\t\t\r\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\r\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\t\t\t\r\n\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\r\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\r\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\r\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.lastClickedRow = row;\r\n\t\t\t}else{\r\n\t\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.selectable !== true){\r\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\r\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectRows(toggledRows);\r\n\t\t\t}\r\n\t\t\tthis.table._clearSelection();\r\n\t\t}\r\n\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\tthis.toggleRow(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}else{\r\n\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\tthis.selectRows(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\t\t\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"string\":\r\n\t\t\t\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\t\t\t\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\t\t\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\t\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\t\t\r\n\t\tif(typeof rows == \"undefined\"){\r\n\t\t\t\r\n\t\t\trowCount = self.selectedRows.length;\r\n\t\t\t\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(rowCount){\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\t\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tgetSelectedRows(){\r\n\t\t\r\n\t\tvar rows = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\t\t\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\t\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\t\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\t\t\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tif(DT.isDateTime(a)){\r\n\t\t\t a = a;\r\n\t\t}else if(format === \"iso\"){\r\n\t\t\t a = DT.fromISO(String(a));\r\n\t\t}else{\r\n\t\t\t a = DT.fromFormat(String(a), format);\r\n\t\t}\r\n\r\n\t\tif(DT.isDateTime(b)){\r\n\t\t\t b = b;\r\n\t\t}else if(format === \"iso\"){\r\n\t\t\t b = DT.fromISO(String(b));\r\n\t\t}else{\r\n\t\t\t b = DT.fromFormat(String(b), format);\r\n\t\t}\r\n\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData(true);\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","import Module from '../../core/Module.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nclass Tooltip extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.tooltipSubscriber = null,\r\n\t\tthis.headerSubscriber = null,\r\n\t\t\r\n\t\tthis.timeout = null;\r\n\t\tthis.popupInstance = null;\r\n\t\t\r\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\r\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \r\n\t\t\r\n\t\tthis.registerColumnOption(\"tooltip\");\r\n\t\tthis.registerColumnOption(\"headerTooltip\");\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.deprecationCheck();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tdeprecationCheck(){\r\n\t\tif(typeof this.table.options.tooltipGenerationMode !== \"undefined\"){\r\n\t\t\tconsole.warn(\"Use of the tooltipGenerationMode option is now deprecated. This option is no longer needed as tooltips are always generated on hover now\");\r\n\t\t}\r\n\t}\t\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\r\n\t\t\tthis.headerSubscriber = true;\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\r\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\r\n\t\t\tthis.tooltipSubscriber = true;\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\r\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\r\n\t\t}\r\n\t}\r\n\t\r\n\tmousemoveCheck(action, e, component){\r\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\r\n\t\t\r\n\t\tif(tooltip){\r\n\t\t\tthis.clearPopup();\r\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\r\n\t\t}\r\n\t}\r\n\r\n\tmouseoutCheck(action, e, component){\r\n\t\tif(!this.popupInstance){\r\n\t\t\tthis.clearPopup();\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearPopup(action, e, component){\r\n\t\tclearTimeout(this.timeout);\r\n\t\tthis.timeout = null;\r\n\t\t\r\n\t\tif(this.popupInstance){\r\n\t\t\tthis.popupInstance.hide();\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadTooltip(e, component, tooltip){\r\n\t\tvar contentsEl, renderedCallback, coords;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trenderedCallback = callback;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof tooltip === \"function\"){\r\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\r\n\t\t}\r\n\t\t\r\n\t\tif(tooltip instanceof HTMLElement){\r\n\t\t\tcontentsEl = tooltip;\r\n\t\t}else{\r\n\t\t\tcontentsEl = document.createElement(\"div\");\r\n\t\t\t\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(component instanceof Cell){\r\n\t\t\t\t\ttooltip = component.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(component.definition.field){\r\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\r\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\ttooltip = component.definition.title;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcontentsEl.innerHTML = tooltip;\r\n\t\t}\r\n\t\t\r\n\t\tif(tooltip || tooltip === 0 || tooltip === \"0\" || tooltip === false){\r\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\r\n\r\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault())\r\n\t\t\t\r\n\t\t\tthis.popupInstance = this.popup(contentsEl);\r\n\t\t\t\r\n\t\t\tif(typeof renderedCallback === \"function\"){\r\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\r\n\t\t\t}\r\n\r\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\r\n\t\t\t\r\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\r\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\r\n\t\t\t\tthis.popupInstance = null;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\r\n\t\t}\r\n\t}\r\n}\r\n\r\nTooltip.moduleName = \"tooltip\";\r\n\r\nexport default Tooltip;\r\n","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.invalidCells = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\t\t\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\t\t\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\t\t\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\t\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\r\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\r\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Event Handling //////////\r\n\t///////////////////////////////////\r\n\t\r\n\teditValidate(cell, value, previousValue){\r\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\r\n\t\t\r\n\t\t// allow time for editor to make render changes then style cell\r\n\t\tif(valid !== true){\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn valid;\r\n\t}\r\n\t\r\n\teditorClear(cell, cancelled){\r\n\t\tif(cancelled){\r\n\t\t\tif(cell.column.modules.validate){\r\n\t\t\t\tthis.cellValidate(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t}\r\n\t\r\n\teditedClear(cell){\r\n\t\tif(cell.modules.validate){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\r\n\t}\r\n\t\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\t\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\t\t\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\t\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\t\t\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\t\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\t\t\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\t\t\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\t\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trow = row.getComponent();\r\n\t\t\t\r\n\t\t\tvar valid = row.validate();\r\n\t\t\t\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\t\t\r\n\t\tif(column.definition.validator){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\t\t\t\t\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\t\t\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\t\t\t\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_buildValidator(type, params){\r\n\t\t\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\t\t\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\t\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tfailedValidators = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\t\t\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach((item) => {\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tfailedValidators.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\t\t\r\n\t\tif(!failedValidators.length){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = failedValidators;\r\n\t\t\t\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn failedValidators.length ? failedValidators : true;\r\n\t}\r\n\t\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\t\t\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\t\t\t\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\t\t\t\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\tdebugInitialization:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tpopupContainer:false,\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //separator for nested data\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\trowHeight:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\tdataLoaderErrorTimeout:3000,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}\r\n","export default class OptionsList {\r\n\tconstructor(table, msgType, defaults = {}){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = Object.assign({}, defaults)\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determine weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\t\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t\t\r\n\t\tthis.fitDataColAvg = 0;\r\n\t\t\r\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\r\n\t\t\r\n\t\tthis.visibleRows = null;\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.isFitData = false;\r\n\t\t\r\n\t\tthis.columns = [];\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.compatibilityCheck();\r\n\t\tthis.layoutCheck();\r\n\t\tthis.vertScrollListen();\r\n\t}\r\n\t\r\n\tcompatibilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\t\t\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\t\t\r\n\t\treturn ok;\r\n\t}\r\n\t\r\n\tlayoutCheck(){\r\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\r\n\t}\r\n\r\n\tvertScrollListen(){\r\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\r\n\t}\r\n\r\n\tclearVisRowCache(){\r\n\t\tthis.visibleRows = null;\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\t\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\t\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\t\t\t\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\r\n\t\t}\r\n\t}\r\n\t\r\n\tcalcWindowBuffer(){\r\n\t\tvar buffer = this.elementVertical.clientWidth;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tif(width > buffer){\r\n\t\t\t\t\tbuffer = width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.windowBuffer = buffer * 2;\r\n\t}\r\n\t\r\n\trerenderColumns(update, blockRedraw){\t\t\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t},\r\n\t\tcolPos = 0;\r\n\t\t\r\n\t\t\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.clear();\r\n\t\t\r\n\t\tthis.calcWindowBuffer();\r\n\t\t\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\t\t\t\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\t\t\t\t\r\n\t\t\t\tconfig.width = width;\r\n\t\t\t\t\r\n\t\t\t\tif (this.isFitData) {\r\n\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t\t\t\t\t//column is visible\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol == -1){\r\n\t\t\t\t\t\tthis.leftCol = this.columns.length;\r\n\t\t\t\t\t\tthis.vDomPadLeft = colPos;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol = this.columns.length;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// column is hidden\r\n\t\t\t\t\tif(this.leftCol !== -1){\r\n\t\t\t\t\t\tthis.vDomPadRight += width;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.vdomHoz = config;\r\n\t\t\t\t\r\n\t\t\t\tcolPos += width;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.reinitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\t\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\t\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\t\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\t\t\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\t\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\t\t\r\n\t\tif(this.isFitData){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.generateCells();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// if(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t// \tbreak;\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// for(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t// \tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\t\t\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn !match;\r\n\t}\r\n\t\r\n\treinitializeRows(){\r\n\t\tvar rows = this.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetVisibleRows(){\r\n\t\tif (!this.visibleRows){\r\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t}\r\n\r\n\t\treturn this.visibleRows;\t\r\n\t}\r\n\t\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\t\r\n\t\t\tlet column = this.columns[this.rightCol + 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t\t\t}\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol - 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\r\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(diff){\r\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\r\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.rightCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\t\t\tthis.rightCol --;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\t\t\tthis.leftCol ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\t\t\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\t\t\t\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn widthDiff;\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\t\t\t\t\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\t\t\t\t\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nimport defaultColumnOptions from './column/defaults/options.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\t\t\tvar topColumn = nextToColumn.getTopColumn()\r\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\r\n\t\t\tvar nextEl = topColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcolumn.columnRendered();\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\tverticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibleColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.clearRows();\r\n\t\tthis.renderRows();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\t// element.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\r\n\t\t});\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\t\tthis.placeholder = null; //placeholder element\r\n\t\tthis.placeholderContents = null; //placeholder element\r\n\t\t\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\t\t\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\t\t\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\t\t\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\t\t\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\t\t\r\n\t\tthis.renderer = null;\r\n\t}\r\n\t\r\n\t//////////////// Setup Functions /////////////////\r\n\t\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitializePlaceholder(){\r\n\t\t//configure placeholder element\r\n\t\tif(typeof this.table.options.placeholder == \"string\"){\r\n\t\t\tlet el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\t\t\t\r\n\t\t\tlet contents = document.createElement(\"div\");\r\n\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\r\n\t\t\tcontents.innerHTML = this.table.options.placeholder;\r\n\t\t\t\r\n\t\t\tel.appendChild(contents);\r\n\t\t\t\r\n\t\t\tthis.placeholderContents = contents;\r\n\t\t\tthis.placeholder = el;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\t\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializePlaceholder()\r\n\t\tthis.initializeRenderer();\r\n\t\t\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\t\t\r\n\t\tthis.firstRender = true;\r\n\t\t\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\t\t\t\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\r\n\t\t\t\tthis._positionPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//handle vertical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\t\t\t\t\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\t\t\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\t\t\r\n\t\treturn match || false;\r\n\t}\r\n\t\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\t\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\t\t\t\t\r\n\t\t\t\tthis._setDataActual(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\t\t\r\n\t\tthis._wipeElements();\r\n\t\t\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\t\t\t\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\t\t\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\t\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\t\t\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\t\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\t\t\t\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlength = data.length - 1;\r\n\t\t\t\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, true);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn pos;\r\n\t}\r\n\t\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\t\t\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\t\t\t\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\t\t\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\t\t\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\t\t\t\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\t\t\t\t\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(top){\r\n\t\t\t\t\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\t\t\r\n\t\tthis.moveRowActual(from, to, after);\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\t\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\t\t\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\t\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\t\t\r\n\t\tif(from !== to){\r\n\t\t\t\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\t\t\t\r\n\t\t\tif (fromIndex > -1) {\r\n\t\t\t\t\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\t\t\t\t\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\t\t\t\t\r\n\t\t\t\tif (toIndex > -1) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\t\t\t\t\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\t\t\t\t\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\t\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\t\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\t\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\t\t\r\n\t\t\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\t\t\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn nextRow;\r\n\t}\r\n\t\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\t\t\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn prevRow;\r\n\t}\r\n\t\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\t\t\r\n\t\trow = this.findRow(row);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\t\t\r\n\t\treturn rows.length;\r\n\t}\r\n\t\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\t\t\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\t\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\t\t\r\n\t\t\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\t\t\t\t\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.renderTable();\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-refreshed\");\r\n\t\t}\r\n\t}\r\n\t\r\n\trefreshPipelines(handler, stage, index, renderInPosition){\r\n\t\tthis.dispatch(\"data-refreshing\");\r\n\t\t\r\n\t\tif(!handler){\r\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t}\r\n\t\t\r\n\t\t//cascade through data refresh stages\r\n\t\tswitch(stage){\r\n\t\t\tcase \"all\":\r\n\t\t\t//handle case where alldata needs refreshing\r\n\t\t\t\r\n\t\t\tcase \"dataPipeline\":\r\n\t\t\t\r\n\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\tindex = 0;\r\n\t\t\tthis.resetDisplayRows();\r\n\t\t\t\r\n\t\t\tcase \"displayPipeline\":\r\n\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\t\t\t\t\r\n\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcase \"end\":\r\n\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t}\r\n\t}\r\n\t\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\t\t\t\t\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\t\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\t\t\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\t\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\t\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\t\t\r\n\t\tvar output = true;\r\n\t\t\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\t\t\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetVisibleRows(chain, viewable){\r\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\r\n\t\t\r\n\t\tif(chain){\r\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\t\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(false, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\t\t\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\t\t\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\t\t\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t\t\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\t\r\n\trenderTable(){\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\t\t\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tthis._clearTable();\r\n\t\t\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis.renderer.renderRows();\r\n\t\t\t\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"table-layout\");\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\t\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\t\t\r\n\t\tthis._clearPlaceholder();\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\t\r\n\t_showPlaceholder(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\t\t\t\r\n\t\t\tthis.getElement().appendChild(this.placeholder);\r\n\t\t\tthis._positionPlaceholder();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_positionPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\r\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\t\t\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\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));\r\n\t\t\t\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.renderer.resize();\r\n\t\t\t\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._positionPlaceholder();\r\n\t}\r\n\t\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\t\t\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\t\t\t\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRenderInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.redrawBlockRenderInPosition = false;\r\n\t}\r\n\t\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t\t\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\t\t\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\t\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.containerElement = this.createContainerElement(); //containing element\r\n\t\tthis.external = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t\r\n\tcreateContainerElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer-contents\");\r\n\r\n\t\tthis.element.appendChild(el);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element){\r\n\t\tthis.activate();\r\n\r\n\t\tthis.containerElement.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element){\r\n\t\tthis.activate();\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.dispatch(\"footer-redraw\")\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\nimport Row from '../row/Row.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\t\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.el = null;\r\n\t\t\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\t\t\r\n\t\tthis.previousTargets = {};\r\n\t\t\r\n\t\tthis.listeners = [\r\n\t\t\t\"click\",\r\n\t\t\t\"dblclick\",\r\n\t\t\t\"contextmenu\",\r\n\t\t\t\"mouseenter\",\r\n\t\t\t\"mouseleave\",\r\n\t\t\t\"mouseover\",\r\n\t\t\t\"mouseout\",\r\n\t\t\t\"mousemove\",\r\n\t\t\t\"touchstart\",\r\n\t\t\t\"touchend\",\r\n\t\t];\r\n\t\t\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\t\t\r\n\t\tthis.pseudoTrackers = {\r\n\t\t\t\"row\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"cell\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"group\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"column\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t}\r\n\t\t\r\n\t\tthis.pseudoTracking = false;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.el = this.table.element;\r\n\t\t\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\t\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\t\t\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\t\t\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\t\r\n\tbindPseudoEvents(){\r\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\r\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\r\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\r\n\t\t});\r\n\t\t\r\n\t\tthis.pseudoTracking = true;\r\n\t}\r\n\t\r\n\tpseudoMouseEnter(key, e, target){\r\n\t\tif(this.pseudoTrackers[key].target !== target){\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.pseudoMouseLeave(key, e);\r\n\t\t\t\r\n\t\t\tthis.pseudoTrackers[key].target = target;\r\n\t\t\t\r\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpseudoMouseLeave(key, e){\r\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\r\n\t\tlinkedKeys = {\r\n\t\t\t\"row\":[\"cell\"],\r\n\t\t\t\"cell\":[\"row\"],\r\n\t\t};\r\n\t\t\r\n\t\tleaveList = leaveList.filter((item) => {\r\n\t\t\tvar links = linkedKeys[key];\r\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\tleaveList.forEach((key) => {\r\n\t\t\tvar target = this.pseudoTrackers[key].target;\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t\t\r\n\t\t\t\tthis.pseudoTrackers[key].target = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\t\t\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\t\t\t\t\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this))\r\n\t}\r\n\t\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\t\t\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\r\n\t\t\tthis.bindPseudoEvents();\r\n\t\t}\r\n\t\t\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\t\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\t\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t\t\r\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\r\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\t\t\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\t\t\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\t\t\t\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\t\t\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\t\t\t\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\r\n\t\t\t\t\t\t\ttargets[key] = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tif(targets[\"row\"] instanceof Row){\r\n\t\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t\t}else{\t\r\n\t\t\t\t\t\t\tif(targets[\"row\"]){\r\n\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?\")\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.previousTargets = targetMatches;\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\t\t\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearWatchers(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.handler){\r\n\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\tlistener.handler = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFunctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\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?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.alertLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\r\n\t\t\t\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.clearAlert();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\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\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.alertError();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.clearAlert();\r\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\talertLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\r\n\t\t}\r\n\t}\r\n\r\n\talertError(){\r\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\tthis.table.alertManager.clear();\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(table, optionsList, debug){\r\n\t\tthis.table = table;\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this.table, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tthis.dispatch(\"layout-refreshing\")\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t\t\"counter\":{\r\n\t\t\t\t\"showing\": \"Showing\",\r\n\t\t\t\t\"of\": \"of\",\r\n\t\t\t\t\"rows\": \"rows\",\r\n\t\t\t\t\"pages\": \"pages\",\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\t\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\t\t\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\t\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\t\t\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\r\n\t\t\t\t\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\t\t\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\t\t\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tvar orderedStartMods = [],\r\n\t\t\torderedEndMods = [],\r\n\t\t\tunOrderedMods = [];\r\n\t\t\t\r\n\t\t\tthis.modules = {};\r\n\t\t\t\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\t\t\t\tlet module = new mod(this);\r\n\t\t\t\t\r\n\t\t\t\tthis.modules[name] = module;\r\n\t\t\t\t\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore.push(module);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(mod.moduleInitOrder){\r\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\r\n\t\t\t\t\t\t\torderedStartMods.push(module);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\torderedEndMods.push(module);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tunOrderedMods.push(module);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\t\t\t\r\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\r\n\t\t}\r\n\t}\r\n\t\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\t\t\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class Alert extends CoreFeature{\r\n constructor(table){\r\n super(table);\r\n \r\n this.element = this._createAlertElement();\r\n this.msgElement = this._createMsgElement();\r\n this.type = null;\r\n \r\n this.element.appendChild(this.msgElement);\r\n }\r\n \r\n _createAlertElement(){\r\n var el = document.createElement(\"div\");\r\n el.classList.add(\"tabulator-alert\");\r\n return el;\r\n }\r\n \r\n _createMsgElement(){\r\n var el = document.createElement(\"div\");\r\n el.classList.add(\"tabulator-alert-msg\");\r\n el.setAttribute(\"role\", \"alert\");\r\n return el;\r\n }\r\n \r\n _typeClass(){\r\n return \"tabulator-alert-state-\" + this.type;\r\n }\r\n \r\n alert(content, type = \"msg\"){\r\n if(content){\r\n this.clear();\r\n \r\n this.type = type;\r\n \r\n while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n \r\n this.msgElement.classList.add(this._typeClass());\r\n \r\n if(typeof content === \"function\"){\r\n content = content();\r\n }\r\n \r\n if(content instanceof HTMLElement){\r\n this.msgElement.appendChild(content);\r\n }else{\r\n this.msgElement.innerHTML = content;\r\n }\r\n \r\n this.table.element.appendChild(this.element);\r\n }\r\n }\r\n \r\n clear(){\r\n if(this.element.parentNode){\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n \r\n this.msgElement.classList.remove(this._typeClass());\r\n }\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport Alert from './tools/Alert.js';\r\n\r\nclass Tabulator {\r\n\t\r\n\tconstructor(element, options){\r\n\t\t\r\n\t\tthis.options = {};\r\n\t\t\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.alertManager = null; //hold Alert Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\r\n\t\t\r\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\t\t\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\r\n\t\t\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\t\r\n\t\tif(this.initializeElement(element)){\r\n\t\t\t\r\n\t\t\tthis.initializeCoreSystems(options);\r\n\t\t\t\r\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\t\t\r\n\t\tTableRegistry.register(this); //register table for inter-device communication\r\n\t}\r\n\t\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\t\t\t\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\t\tthis.alertManager = new Alert(this);\r\n\t\t\r\n\t\tthis.bindModules();\r\n\t\t\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\t\t\r\n\t\tthis._clearObjectPointers();\r\n\t\t\r\n\t\tthis._mapDeprecatedFunctionality();\r\n\t\t\r\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\t\t\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\t\t\r\n\t\tthis.dataLoader.initialize();\r\n\t\t// this.columnManager.initialize();\r\n\t\t// this.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\t\r\n\t//convert deprecated functionality to new functions\r\n\t_mapDeprecatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\t\r\n\t_clearSelection(){\r\n\t\t\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\tif (window.getSelection) {\r\n\t\t\tif (window.getSelection().empty) { // Chrome\r\n\t\t\t\twindow.getSelection().empty();\r\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t}\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\t\r\n\t//create table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\t\t\r\n\t\tthis._rtlCheck();\r\n\t\t\r\n\t\tthis._buildElement();\r\n\t\t\r\n\t\tthis._initializeTable();\r\n\t\t\r\n\t\tthis._loadInitialData();\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\t\r\n\t_rtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\t\t\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\t\t\r\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options,\r\n\t\tnewElement;\r\n\t\t\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\t\t\t\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\t\t\t\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\t\t\t\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\r\n\t\t\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\t\t\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\t\t\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\t\t\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\t\t\r\n\t\tthis.interactionMonitor.initialize();\r\n\t\t\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\t\t\r\n\t\tthis._detectBrowser();\r\n\t\t\r\n\t\t//initialize core modules\r\n\t\tthis.modulesCore.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t})\r\n\t\t\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\t\t\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\t\t\r\n\t\tif(options.autoColumns && options.data){\r\n\t\t\t\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\t\t\r\n\t\t//initialize regular modules\r\n\t\tthis.modulesRegular.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t});\r\n\t\t\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\t\t\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t}\r\n\t\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\t\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\t\t\r\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\r\n\t\t\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\t\t\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\t\t\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\t\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\t\t\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\t\t\r\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));\r\n\t}\r\n\t\r\n\tinitGuard(func, msg){\r\n\t\tvar stack, line;\r\n\t\t\r\n\t\tif(this.options.debugInitialization && !this.initialized){\r\n\t\t\tif(!func){\r\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\r\n\t\t\t\t\r\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\r\n\t\t\t\t\r\n\t\t\t\tif(line[0] == \" \"){\r\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\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 : \"\"));\r\n\t\t}\r\n\t\t\r\n\t\treturn this.initialized;\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\t\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\r\n\t\t\r\n\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t}\r\n\t\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\t\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\t\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\t\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t}\r\n\t\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\tresponses++;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\taddData(data, pos, index){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t.then((rows) => {\r\n\t\t\t\t\tvar output = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tresolve(output);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\t\t\t\t\t\r\n\t\t\t\t\tresponses++;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\t\t\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\t\t\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\t\t\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\t\t\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\t\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t.then((rows)=>{\r\n\t\t\treturn rows[0].getComponent();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\t\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn Promise.resolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\t\r\n\t}\r\n\t\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\r\n\t\t\r\n\t\tthis.columnManager.setColumns(definition);\r\n\t}\r\n\t\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\t\r\n\tgetColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\t\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field); \r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\t\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from),\r\n\t\ttoColumn = this.columnManager.findColumn(to);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.columnManager.redraw(force);\r\n\t\tthis.rowManager.redraw(force);\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\t\r\n\t//////////////////// Event Bus ///////////////////\r\n\t\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\t\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\t\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\t\t\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t//////////////////// Alerts ///////////////////\r\n\r\n\talert(contents, type){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.alertManager.alert(contents, type);\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.alertManager.clear();\r\n\t}\r\n\t\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\t\t\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\t\t\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;\r\n","//tabulator with all modules installed\r\nimport {default as Tabulator} from './Tabulator.js';\r\nimport * as modules from '../core/modules/optional.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nclass TabulatorFull extends Tabulator {};\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(TabulatorFull, modules);\r\n\r\nexport default TabulatorFull;","export default class PseudoRow {\r\n\r\n\tconstructor (type){\r\n\t\tthis.type = type;\r\n\t\tthis.element = this._createElement();\r\n\t}\r\n\r\n\t_createElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetComponent(){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn {};\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.outerHeight;\r\n\t}\r\n\r\n\tinitialize(){}\r\n\r\n\treinitialize(){}\r\n\r\n\tnormalizeHeight(){}\r\n\r\n\tgenerateCells(){}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n}"],"names":["generateParamsList","defaultURLGenerator","defaultOptions","RowComponent","List","Edit","html","textarea","tickCross","star","progress","csv","json","Popup","datetime","number","RendererVirtualDomHorizontal","RendererBasicHorizontal","RendererVirtualDomVertical","RendererBasicVertical","InteractionMonitor"],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/tabulator_esm.min.js b/dist/js/tabulator_esm.min.js index b370916ea..88227e0bd 100644 --- a/dist/js/tabulator_esm.min.js +++ b/dist/js/tabulator_esm.min.js @@ -1,3 +1,3 @@ -/* Tabulator v5.1.7 (c) Oliver Folkerd 2022 */ -class e{constructor(e){this.table=e}reloadData(e,t){return this.table.dataLoader.load(e,void 0,void 0,void 0,t)}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(){return this.table.modules.layout.layout()}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]}module(e){return this.table.module(e)}}class t 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]=t: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}refreshData(e,t){t||(t=this._handler),t&&this.table.rowManager.refreshActiveData(t,!1,e)}}class s{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 deepClone(e,t,i=[]){var s={}.__proto__,o=[].__proto__;for(var n in t||(t=Object.assign(Array.isArray(e)?[]:{},e)),e){let r,a,l=e[n];null==l||"object"!=typeof l||l.__proto__!==s&&l.__proto__!==o||(r=i.findIndex((e=>e.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 o extends t{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)),o=e.getComponent(),n=s.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var s,r,a,l;e.modules.accessor&&(r=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(s=e.getFieldValue(n))&&(l=e.getComponent(),a="function"==typeof r.params?r.params(s,n,t,l,o):r.params,e.setFieldValue(n,r.accessor(s,n,t,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){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}var l={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var s=a(i),o=new FormData;return s.forEach((function(e){o.append(e.key,e.value)})),o}}};class h extends t{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=h.contentTypeFormatters}initialize(){this.loaderPromise=this.table.options.ajaxRequestFunc||h.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||h.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(s,o)),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({},h.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()}}h.moduleName="ajax",h.defaultConfig={method:"GET"},h.defaultURLGenerator=function(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},h.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([]))}))},h.contentTypeFormatters=l;class d extends t{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;if(!this.blocked){if(e.preventDefault(),this.customSelection)t=this.customSelection,this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t));else{var s=this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig,this.table.options.clipboardCopyStyled,this.rowRange,"clipboard");t=(i=this.table.modules.export.genereateHTMLTable(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=d.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=d.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.checkPaseOrigin(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}checkPaseOrigin(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(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}}d.moduleName="clipboard",d.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)}},d.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)}};class c{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 u{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(){return this._cell.row.getData()}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 m 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"),this.element=this.element}_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)}));"hover"===this.table.options.tooltipGenerationMode&&e.addEventListener("mouseenter",(e=>{this._generateTooltip()})),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":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=e}}cellRendered(){this.dispatch("cell-rendered",this)}_generateTooltip(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")}getElement(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}getValue(){return this.value}getOldValue(){return this.oldValue}setValue(e,t){this.setValueProcessData(e,t)&&(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){var i=!1;return this.value!==e&&(i=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),i&&this.dispatch("cell-value-changed",this),i}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._generateTooltip(),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}setHeight(){this.height=this.row.height,this.element.style.height=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 u(this)),this.component}}class p{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 b&&this._column.parent.getComponent()}_getSelf(){return this._column}scrollTo(){return this._column.table.columnManager.scrollToColumn(this._column)}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.renderer.rerenderColumns(!0),t}}var g={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,tooltip:void 0,cssClass:void 0,variableHeight:void 0,headerTooltip:void 0,headerVertical:void 0,headerHozAlign:void 0,editableTitle:void 0};class b 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.tooltip=!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 b(e,this);this.attachColumn(i)})),this.checkColumnVisibility()):t.registerColumnField(this),this._initialize(),this.bindModuleColumns()}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),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(b.defaultOptionList,this.definition)}checkDefinition(){Object.keys(this.definition).forEach((e=>{-1===b.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)}_mapDepricatedFunctionality(){}setTooltip(){var e=this.definition,t=e.headerTooltip;t?!0===t?e.field?this.langBind("columns|"+e.field,(t=>{this.element.setAttribute("title",t||e.title)})):this.element.setAttribute("title",e.title):("function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")}_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._bindEvents(),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.setTooltip(),this.dispatch("column-init",this),this.element.addEventListener("mouseenter",(e=>{this.setTooltip()}))}_bindEvents(){var e,t,i,s=this.definition;"function"==typeof s.headerClick&&this.element.addEventListener("click",(e=>{s.headerClick(e,this.getComponent())})),"function"==typeof s.headerDblClick&&this.element.addEventListener("dblclick",(e=>{s.headerDblClick(e,this.getComponent())})),"function"==typeof s.headerContext&&this.element.addEventListener("contextmenu",(e=>{s.headerContext(e,this.getComponent())})),"function"==typeof s.headerTap&&(i=!1,this.element.addEventListener("touchstart",(e=>{i=!0}),{passive:!0}),this.element.addEventListener("touchend",(e=>{i&&s.headerTap(e,this.getComponent()),i=!1}))),"function"==typeof s.headerDblTap&&(e=null,this.element.addEventListener("touchend",(t=>{e?(clearTimeout(e),e=null,s.headerDblTap(t,this.getComponent())):e=setTimeout((()=>{clearTimeout(e),e=null}),300)}))),"function"==typeof s.headerTapHold&&(t=null,this.element.addEventListener("touchstart",(e=>{clearTimeout(t),t=setTimeout((function(){clearTimeout(t),t=null,i=!1,s.headerTapHold(e,this.getComponent())}),1e3)}),{passive:!0}),this.element.addEventListener("touchend",(e=>{clearTimeout(t),t=null})))}_buildColumnHeader(){var e=this.definition;this.table;(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.tooltip=this.definition.tooltip,this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}_buildColumnHeaderContent(){this.definition,this.table;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.editableTitle){var i=document.createElement("input");i.classList.add("tabulator-title-editor"),i.addEventListener("click",(e=>{e.stopPropagation(),i.focus()})),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":case"null":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-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}getHeight(){return Math.ceil(this.element.getBoundingClientRect().height)}setMinWidth(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}setMaxWidth(e){this.maxWidth=e,this.maxWidthStyled=e?e+"px":"",this.element.style.maxWidth=this.maxWidthStyled,this.cells.forEach((function(e){e.setMaxWidth()}))}delete(){return new Promise(((e,t)=>{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 p(this)),this.component}}b.defaultOptionList=g;class f{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(e){return this._row.table.rowManager.getRowPosition(this._row,e)}delete(){return this._row.delete()}scrollTo(){return this._row.table.rowManager.scrollToRow(this._row)}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 v 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.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){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),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)}reinitializeHeight(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}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=0,i=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach((function(e){var i=e.getHeight();i>t&&(t=i)})),this.height=e?Math.max(t,i):this.manualHeight?this.height:Math.max(t,i),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.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&&s.elVisible(this.element),o={};return new Promise(((s,n)=>{for(var r in"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)),t=this.chain("row-data-changing",[this,o,e],null,e))this.data[r]=t[r];for(var r in this.dispatch("row-data-save-after",this),e){this.table.columnManager.getColumnsByFieldRoot(r).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()),s()}))}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||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||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.table.rowManager.getRowIndex(this);this.detatchModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}detatchModules(){this.dispatch("row-deleting",this)}deleteCells(){var e=this.cells.length;for(let t=0;ts||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)){this.recalcGroup(e)})))}recalcGroup(e){var t,i;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 v(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 c(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 m(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}}}C.moduleName="columnCalcs",C.calculations=w;class E extends t{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.displayIndex=0,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,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),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.registerDisplayHandler(this.getRows.bind(this),30)}}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=(t=t||e.getCells()[0].getElement(),i.controlEl);!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))}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}getRows(e){var t=[];return e.forEach(((e,i)=>{var s;t.push(e),e instanceof v&&(e.create(),(s=e.modules.dataTree.children).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 v(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()}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 v&&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 v?i=e.data:e instanceof RowComponent?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.modules.dataTree&&(i=t.modules.dataTree.children.find((t=>t instanceof v&&t.element===e)))&&(i=i.data):i=null!=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.children&&(Array.isArray(s.children)||(s.children=this.generateChildren(e)),s.children.forEach((e=>{e instanceof v&&(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]}}E.moduleName="dataTree";var y={csv:function(e,t,i){var s=t&&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=JSON.stringify(e.value);break;case"undefined":case"null":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&&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=JSON.stringify(e.value);break;case"undefined":case"null":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&&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&&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);function a(){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(n.SheetNames=[],n.Sheets={},i.sheetOnly)s(a());else{if(i.sheets)for(var l in i.sheets)!0===i.sheets[l]?(n.SheetNames.push(l),n.Sheets[l]=a()):(n.SheetNames.push(l),r.commsSend(i.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){n.Sheets[l]=e}}));else n.SheetNames.push(o),n.Sheets[o]=a();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,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.genereateHTMLTable(e),"text/html")}};class R extends t{constructor(e){super(e),this.registerTableOption("downloadReady",(function(e,t){return t})),this.registerTableOption("downloadConfig",{}),this.registerTableOption("downloadRowRange","active"),this.registerColumnOption("download"),this.registerColumnOption("titleDownload")}initialize(){this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}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:R.downloaders[e]?n=R.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=new Blob([e],{type:t});s=s||"Tabulator."+("function"==typeof i?"txt":i);(r=this.table.options.downloadReady(e,r))&&(o?window.open(window.URL.createObjectURL(r)):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){switch(t){case"intercept":this.download(i.type,"",i.options,i.active,i.intercept)}}}function x(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){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)}R.moduleName="download",R.downloaders=y;var M={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(){r.focus({preventScroll:!0}),r.style.height="100%"})),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&&x(r,o),r},textarea:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"hybrid",a=String(null!=n?n:""),l=((a.match(/(?:\r\n|\r|\n)/g)||[]).length,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(){l.focus({preventScroll:!0}),l.style.height="100%",l.scrollHeight,l.style.height=l.scrollHeight+"px",e.getRow().normalizeHeight()})),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 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&&x(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(){a.removeEventListener("blur",l),a.focus({preventScroll:!0}),a.style.height="100%",a.addEventListener("blur",l)})),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&&x(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(){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},select:function(e,t,i,o,n){var r=this,a=e.getElement(),l=e.getValue(),h=n.verticalNavigation||"editor",d=void 0!==l||null===l?Array.isArray(l)?l:[l]:void 0!==n.defaultValue?n.defaultValue:[],c=document.createElement("input"),u=document.createElement("div"),m=n.multiselect,p=[],g={},b=[],f=[],v=!0,w=!1,C="",E=null;function y(t){var i,s={},o=r.table.getData();return(i=t?r.table.columnManager.getColumnByField(t):e.getColumn()._getSelf())?o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(s[t]=!0)})):console.warn("unable to find matching column to create select lookup list:",t),Object.keys(s)}function R(t,i){var s=[],o=[];function r(e){e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return i.indexOf(e.value)>-1&&M(e),s.push(e),o.push(e),e}if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach((function(e){var t;"object"==typeof e?e.options?(t={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1},o.push(t),e.options.forEach((function(e){r(e)}))):r(e):(t={label:e,value:e,element:!1},i.indexOf(t.value)>-1&&M(t),s.push(t),o.push(t))}));else for(var a in t){var l={label:t[a],value:a,element:!1};i.indexOf(l.value)>-1&&M(l),s.push(l),o.push(l)}n.sortValuesList&&(s.sort(((e,t)=>e.labelt.label?1:0)),o.sort(((e,t)=>e.labelt.label?1:0)),"asc"!==n.sortValuesList&&(s.reverse(),o.reverse())),p=s,b=o,function(){for(;u.firstChild;)u.removeChild(u.firstChild);b.forEach((function(t){var i=t.element;if(!i){if(i=document.createElement("div"),t.label=n.listItemFormatter?n.listItemFormatter(t.value,t.label,e,i,t.itemParams):t.label,t.group?(i.classList.add("tabulator-edit-select-list-group"),i.tabIndex=0,i.innerHTML=""===t.label?" ":t.label):(i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=""===t.label?" ":t.label,i.addEventListener("click",(function(){w=!0,setTimeout((()=>{w=!1}),10),m?(L(t),c.focus()):k(t)})),f.indexOf(t)>-1&&i.classList.add("active")),t.elementAttributes&&"object"==typeof t.elementAttributes)for(let e in t.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),i.setAttribute(e,c.getAttribute(e)+t.elementAttributes["+"+e])):i.setAttribute(e,t.elementAttributes[e]);i.addEventListener("mousedown",(function(){v=!1,setTimeout((function(){v=!0}),10)})),t.element=i}u.appendChild(i)}))}()}function x(e,t){!m&&g&&g.element&&g.element.classList.remove("active"),g&&g.element&&g.element.classList.remove("focused"),g=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active")),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function M(e){-1==f.indexOf(e)&&(f.push(e),x(e,!0)),S()}function T(e){var t=f[e];e>-1&&(f.splice(e,1),t.element&&t.element.classList.remove("active"))}function L(e){e||(e=g);var t=f.indexOf(e);t>-1?T(t):(!0!==m&&f.length>=m&&T(0),M(e)),S()}function k(e){z(),e||(e=g),e&&(c.value=e.label,i(e.value)),d=[e.value]}function D(e){e||z();var t=[];f.forEach((e=>{t.push(e.value)})),d=t,i(t)}function S(){var e=[];f.forEach((t=>{e.push(t.label)})),c.value=e.join(", "),!1===r.currentCell&&D(!0)}function F(){z(),o()}function z(){u.parentNode&&u.parentNode.removeChild(u),r.table.rowManager.element.removeEventListener("scroll",F)}if((Array.isArray(n)||!Array.isArray(n)&&"object"==typeof n&&!n.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),n={values:n}),c.setAttribute("type","text"),c.style.padding="4px",c.style.width="100%",c.style.boxSizing="border-box",c.style.cursor="default",c.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==typeof n.elementAttributes)for(let e in n.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+n.elementAttributes["+"+e])):c.setAttribute(e,n.elementAttributes[e]);return c.value=void 0!==l||null===l?l:"",c.addEventListener("search",(function(e){c.value||(!function(){var e=f.length;for(let t=0;t0&&x(p[t-1],!m));break;case 40:t=p.indexOf(g),("editor"==h||"hybrid"==h&&t=38&&e.keyCode<=90&&function(e){clearTimeout(E);var t=String.fromCharCode(event.keyCode).toLowerCase();C+=t.toLowerCase();var i=p.find((e=>void 0!==e.label&&e.label.toLowerCase().startsWith(C)));i&&x(i,!m),E=setTimeout((()=>{C=""}),800)}(e.keyCode)}})),c.addEventListener("blur",(function(e){v&&(m?D():F())})),c.addEventListener("focus",(function(e){w||function(){if(f=[],!u.parentNode){!0===n.values?R(y(),d):"string"==typeof n.values?R(y(n.values),d):R(n.values||[],d);var e=s.elOffset(a);u.style.minWidth=a.offsetWidth+"px",u.style.top=e.top+a.offsetHeight+"px",u.style.left=e.left+"px",u.addEventListener("mousedown",(function(e){v=!1,setTimeout((function(){v=!0}),10)})),document.body.appendChild(u)}}()})),(u=document.createElement("div")).classList.add("tabulator-edit-select-list"),t((function(){c.style.height="100%",c.focus({preventScroll:!0})})),setTimeout((()=>{this.table.rowManager.element.addEventListener("scroll",F)}),10),c},autocomplete:function(e,t,i,o,n){var r=this,a=e.getElement(),l=e.getValue(),h=n.verticalNavigation||"editor",d=void 0!==l||null===l?l:void 0!==n.defaultValue?n.defaultValue:"",c=document.createElement("input"),u=document.createElement("div"),m=[],p=!1,g=!0,b=!1;if(c.setAttribute("type","search"),c.style.padding="4px",c.style.width="100%",c.style.boxSizing="border-box",n.elementAttributes&&"object"==typeof n.elementAttributes)for(let e in n.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+n.elementAttributes["+"+e])):c.setAttribute(e,n.elementAttributes[e]);function f(){!0===n.values?b=v():"string"==typeof n.values&&(b=v(n.values))}function v(t){var i,s={},o=r.table.getData();return(i=t?r.table.columnManager.getColumnByField(t):e.getColumn()._getSelf())?(o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(s[t]=!0)})),s=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(s).sort():Object.keys(s).sort().reverse():Object.keys(s)):console.warn("unable to find matching column to create autocomplete lookup list:",t),s}function w(e,t){var i,s,o=[];i=b||(n.values||[]),n.searchFunc?(o=n.searchFunc(e,i))instanceof Promise?(C(void 0!==n.searchingPlaceholder?n.searchingPlaceholder:"Searching..."),o.then((e=>{R(E(e),t)})).catch((e=>{console.err("error in autocomplete search promise:",e)}))):R(E(o),t):(s=E(i),""===e?n.showListOnEmpty&&(o=s):s.forEach((function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&o.push(t)})),R(o,t))}function C(e){var t=document.createElement("div");y(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,u.appendChild(t))}function E(e){var t=[];if(Array.isArray(e))e.forEach((function(e){var i={};"object"==typeof e?(i.title=n.listItemFormatter?n.listItemFormatter(e.value,e.label):e.label,i.value=e.value):(i.title=n.listItemFormatter?n.listItemFormatter(e,e):e,i.value=e),t.push(i)}));else for(var i in e){var s={title:n.listItemFormatter?n.listItemFormatter(i,e[i]):e[i],value:i};t.push(s)}return t}function y(){for(;u.firstChild;)u.removeChild(u.firstChild)}function R(e,t){e.length?function(e,t){var i=!1;y(),(m=e).forEach((function(e){var s=e.element;s||((s=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),s.tabIndex=0,s.innerHTML=e.title,s.addEventListener("click",(function(t){T(e),M()})),s.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),e.element=s,t&&e.value==l&&(c.value=e.title,e.element.classList.add("active"),i=!0),e===p&&(e.element.classList.add("active"),i=!0)),u.appendChild(s)})),i||T(!1)}(e,t):n.emptyPlaceholder&&C(n.emptyPlaceholder)}function M(){L(),p?l!==p.value?(l=p.value,c.value=p.title,i(p.value)):o():n.freetext||n.allowEmpty&&""===c.value?(l=c.value,i(c.value)):o()}function T(e,t){p&&p.element&&p.element.classList.remove("active"),p=e,e&&e.element&&e.element.classList.add("active"),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function L(){u.parentNode&&u.parentNode.removeChild(u),r.table.rowManager.element.removeEventListener("scroll",k)}function k(){L(),o()}return u.classList.add("tabulator-edit-select-list"),u.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),c.addEventListener("keydown",(function(e){var t;switch(e.keyCode){case 38:t=m.indexOf(p),("editor"==h||"hybrid"==h&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),T(t>0&&m[t-1]));break;case 40:t=m.indexOf(p),("editor"==h||"hybrid"==h&&t{this.table.rowManager.element.addEventListener("scroll",k)}),10),f(),c.value=d,w(d,!0),c},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;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 d(e){return a?e?h?l:r.checked:r.checked&&!h?(r.checked=!1,r.indeterminate=!0,h=!0,l):(h=!1,r.checked):r.checked}return r.value=n,!a||void 0!==n&&n!==l&&""!==n||(h=!0,r.indeterminate=!0),"firefox"!=this.table.browser&&t((function(){r.focus({preventScroll:!0})})),r.checked=!0===n||"true"===n||"True"===n||1===n,t((function(){r.focus()})),r.addEventListener("change",(function(e){i(d())})),r.addEventListener("blur",(function(e){i(d(!0))})),r.addEventListener("keydown",(function(e){13==e.keyCode&&i(d()),27==e.keyCode&&s()})),r}};class T extends t{constructor(e){super(e),this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[],this.editors=T.editors,this.registerColumnOption("editable"),this.registerColumnOption("editor"),this.registerColumnOption("editorParams"),this.registerColumnOption("cellEditing"),this.registerColumnOption("cellEdited"),this.registerColumnOption("cellEditCancelled"),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("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("column-delete",this.columnDeleteCheck.bind(this)),this.subscribe("row-deleting",this.rowDeleteCheck.bind(this)),this.subscribe("data-refreshing",this.cancelEdit.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-left",this.navigateLeft.bind(this,void 0)),this.subscribe("keybinding-nav-right",this.navigateRight.bind(this,void 0)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this,void 0)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this,void 0))}keybindingNavigateNext(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(t,e)||i&&(t.getElement().firstChild.blur(),(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 ")}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.findNextEditableCell(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 o=t-1;o>=0;o--){let t=e.cells[o],n=!0;if(t.column.modules.edit&&s.elVisible(t.getElement())&&("function"==typeof t.column.modules.edit.check&&(n=t.column.modules.edit.check(t.getComponent())),n)){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()}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(),e?i.column.modules.validate&&this.table.modExists("validate")&&this.table.modules.validate.cellValidate(i):t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-row-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);i.setAttribute("tabindex",0),i.addEventListener("click",(function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})})),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),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.offsetTop;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();r.offsetLeft;this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin),n-=parseInt(this.table.modules.frozenColumns.rightMargin)),"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)}}edit(e,t,i){var s,o,n,r=this,a=!0,l=function(){},h=e.getElement();if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(t&&t.stopPropagation(),typeof e.column.modules.edit.check){case"function":a=e.column.modules.edit.check(e.getComponent());break;case"boolean":a=e.column.modules.edit.check}if(a||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.dispatchExternal("cellEditing",o),n="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(o):e.column.modules.edit.params,!1===(s=e.column.modules.edit.editor.call(r,o,(function(e){l=e}),(function(t){if(r.currentCell===e){var i=!0;return e.column.modules.validate&&r.table.modExists("validate")&&"manual"!=r.table.options.validationMode&&(i=r.table.modules.validate.validate(e.column.modules.validate,e,t)),!0===i||"highlight"===r.table.options.validationMode?(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.classList.add("tabulator-validation-fail"),r.table.externalEvents.dispatch("validationFailed",e.getComponent(),t,i),!1)):(r.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),r.focusCellNoEvent(e,!0),l(),r.table.externalEvents.dispatch("validationFailed",e.getComponent(),t,i),!1)}}),(function(){r.currentCell===e&&r.cancelEdit()}),n)))return h.blur(),!1;if(!(s instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",s),h.blur(),!1;for(h.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(s),l();for(var d=h.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,e.modules.validate&&(e.modules.validate.invalid=!1)),(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1)}}T.moduleName="edit",T.editors=M;class L{constructor(e,t,i,s){this.type=e,this.columns=t,this.component=i||!1,this.indent=s||0}}class k{constructor(e,t,i,s,o){this.value=e,this.component=t||!1,this.width=i,this.height=s,this.depth=o}}class D extends t{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){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=s;var o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],n=this.bodyToExportRows(this.rowLookup(i));return o.concat(n)}genereateTable(e,t,i,s){var o=this.generateExportList(e,t,i,s);return this.genereateTableElement(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"active":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(){var e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((t=>{var i=this.processColumnGroup(t);i&&e.push(i)})),e}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){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])}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 k(i,e.column.getComponent(),e.width,e.height,e.depth))}else t.push(null)})),s.push(new L("header",t))})),s}bodyToExportRows(e){var t=[],i=[];return 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 k(e.key,e.getComponent(),t.length,1));break;case"calc":case"row":t.forEach((e=>{n.push(new k(e._column.getFieldValue(o),e,1,1))})),this.table.options.dataTree&&!1!==this.config.dataTree&&(r=e.modules.dataTree.index)}i.push(new L(e.type,n,e.getComponent(),r))})),i}genereateTableElement(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)=>{switch(e.type){case"header":i.appendChild(this.genereateHeaderElement(e,r,o));break;case"group":s.appendChild(this.genereateGroupElement(e,r,o));break;case"calc":s.appendChild(this.genereateCalcElement(e,r,o));break;case"row":let n=this.genereateRowElement(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}genereateHeaderElement(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}genereateGroupElement(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=n.value: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}genereateCalcElement(e,t,i){var s=this.genereateRowElement(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}genereateRowElement(e,t,s){var o=document.createElement("tr");return o.classList.add("tabulator-print-table-row"),e.columns.forEach((n=>{if(n){var r=document.createElement("td"),a=n.component._column,l=this.table.columnManager.findColumnIndex(a),h=n.value,d={modules:{},getValue:function(){return h},getField:function(){return a.definition.field},getElement:function(){return r},getColumn:function(){return a.getComponent()},getData:function(){return e.component.getData()},getRow:function(){return e.component},getComponent:function(){return d},column:a};if((a.definition.cssClass?a.definition.cssClass.split(" "):[]).forEach((function(e){r.classList.add(e)})),this.table.modExists("format")&&!1!==this.config.formatCells)h=this.table.modules.format.formatExportValue(d,this.colVisProp);else switch(typeof h){case"object":h=JSON.stringify(h);break;case"undefined":case"null":h="";break;default:h=h}h instanceof Node?r.appendChild(h):r.innerHTML=h,(s.styleCells[l]||s.firstCell)&&(this.mapElementStyles(s.styleCells[l]||s.firstCell,r,["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"]),a.definition.align&&(r.style.textAlign=a.definition.align)),this.table.options.dataTree&&!1!==this.config.dataTree&&(t.treeElementField&&t.treeElementField==a.field||!t.treeElementField&&0==i)&&(e.component._row.modules.dataTree.controlEl&&r.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),r.firstChild),e.component._row.modules.dataTree.branchEl&&r.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),r.firstChild)),o.appendChild(r),d.modules.format&&d.modules.format.renderedCallback&&d.modules.format.renderedCallback(),t.rowFormatter&&!1!==this.config.formatCells&&t.rowFormatter(e.component)}})),o}genereateHTMLTable(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML}getHtml(e,t,i,s){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,s||"htmlOutput");return this.genereateHTMLTable(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]]=o.getPropertyValue(e)}))}}}}D.moduleName="export";var S={"=":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 F extends t{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.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)),"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}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){var t=e.definition;t.headerFilter&&(void 0!==t.headerFilterPlaceholder&&t.field&&this.module("localize").setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),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":F.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,F.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)switch(n){case"partial":o=function(i){var s=e.getFieldValue(i);return null!=s&&String(s).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";break;default:o=function(i){return e.getFieldValue(i)==t},r="="}i.headerFilters[s]={value:t,func:o,type:r,params:{}}}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=this,c=e.modules.filter.success,u=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),u){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e&&0!==e},(s=document.createElement("div")).classList.add("tabulator-header-filter"),typeof e.definition.headerFilter){case"string":d.table.modules.edit.editors[e.definition.headerFilter]?(o=d.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&&d.table.modules.edit.editors[e.definition.formatter]?(o=d.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=d.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()},getRow:function(){return{normalizeHeight:function(){}}}},h="function"==typeof(h=e.definition.headerFilterParams||{})?h.call(d.table,r):h,!(n=o.call(this.table.modules.edit,r,(function(){}),c,(function(){}),h)))return void console.warn("Filter Error - Cannot add filter to "+u+" column, editor returned a value of false");if(!(n instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+u+" column, editor should return an instance of Node, the editor returned:",n);u?d.langBind("headerFilters|columns|"+e.definition.field,(function(e){n.setAttribute("placeholder",void 0!==e&&e?e:d.langText("headerFilters|default"))})):d.langBind("headerFilters|default",(function(e){n.setAttribute("placeholder",e)})),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("focus",(e=>{var t=this.table.columnManager.element.scrollLeft;t!==this.table.rowManager.element.scrollLeft+parseInt(this.table.columnManager.element.style.marginLeft)&&(this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))})),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout((function(){c(n.value)}),d.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){c(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||d.headerFilterColumns.push(e)}}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.headerElement.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():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||{})}:F.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return F.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return F.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()),"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(),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}}F.moduleName="filter",F.filters=S;var z={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=parseFloat(e.getValue()),l="",h=t.decimal||".",d=t.thousand||",",c=t.negativeSign||"-",u=t.symbol||"",m=!!t.symbolAfter,p=void 0!==t.precision?t.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(a<0&&(a=Math.abs(a),l=c),s=!1!==p?a.toFixed(p):a,o=(s=String(s).split("."))[0],n=s.length>1?h+s[1]:"",r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+d+"$2");return m?l+o+n+u:l+u+o+n},link:function(e,t,i){var s=e.getValue(),o=t.urlPrefix||"",n=t.download,r=s,a=document.createElement("a");if(t.labelField&&(r=e.getData()[t.labelField]),t.label)switch(typeof t.label){case"string":r=t.label;break;case"function":r=t.label(e)}if(r){if(t.urlField&&(s=e.getData()[t.urlField]),t.url)switch(typeof t.url){case"string":s=t.url;break;case"function":s=t.url(e)}return a.setAttribute("href",o+s),t.target&&a.setAttribute("target",t.target),t.download&&(n="function"==typeof n?n(e):!0===n?"":n,a.setAttribute("download",n)),a.innerHTML=this.emptyToSpace(this.sanitizeHTML(r)),a}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=void 0!==t.tickElement?t.tickElement:'',l=void 0!==t.crossElement?t.crossElement:'';return r&&s||!0===s||"true"===s||"True"===s||1===s||"1"===s?(o.setAttribute("aria-checked",!0),a||""):!n||"null"!==s&&""!==s&&null!=s?(o.setAttribute("aria-checked",!1),l||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var s=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",n=t.outputFormat||"dd/MM/yyyy HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=e.getValue();if(void 0!==s){var l="iso"===o?s.fromISO(String(a)):s.fromFormat(String(a),o);return l.isValid?(t.timezone&&(l=l.shiftTimezone(t.timezone)),l.toFormat(n)):!0!==r&&a?"function"==typeof r?r(a):r:a}console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var s=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",r=void 0!==t.suffix&&t.suffix,a=void 0!==t.unit?t.unit:"days",l=void 0!==t.humanize&&t.humanize,h=void 0!==t.date?t.date:s.now(),d=e.getValue();if(void 0!==s){var c="iso"===o?s.fromISO(String(d)):s.fromFormat(String(d),o);if(!c.isValid)return!0===n?d:"function"==typeof n?n(d):n;if(!l)return parseInt(c.diff(h,a)[a])+(r?" "+r:"")}else 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&&t.max?t.max:100,c=t&&t.min?t.min:0,m=t&&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)){var p=100/t.color.length,g=Math.floor(o/p);g=Math.min(g,t.color.length-1),g=Math.max(g,0),n=t.color[g];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)){p=100/t.legendColor.length,g=Math.floor(o/p);g=Math.min(g,t.legendColor.length-1),g=Math.max(g,0),a=t.legendColor[g]}break;default:a="#000"}h.style.minWidth="30px",h.style.position="relative",h.setAttribute("aria-label",o);var b=document.createElement("div");b.style.display="inline-block",b.style.position="absolute",b.style.width=o+"%",b.style.backgroundColor=n,b.style.height="100%",b.setAttribute("data-max",d),b.setAttribute("data-min",c);var f=document.createElement("div");if(f.style.position="relative",f.style.width="100%",f.style.height="100%",r){var v=document.createElement("div");v.style.position="absolute",v.style.top=0,v.style.left=0,v.style.textAlign=m,v.style.width="100%",v.style.color=a,v.innerHTML=r}return i((function(){if(!(e instanceof u)){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(f),f.appendChild(b),r&&f.appendChild(v)})),""},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){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1||""},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="+-",e.getElement().classList.add("tabulator-row-handle"),s.addEventListener("click",(function(e){e.stopImmediatePropagation(),n(!o.open)})),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 f?(s.addEventListener("change",(e=>{"click"===this.table.options.selectableRangeMode&&o?o=!1:n.toggleSelect()})),"click"===this.table.options.selectableRangeMode&&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 P extends t{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":P.formatters[s]?i.formatter=P.formatters[s]:(console.warn("Formatter Error - No such formatter found: ",s),i.formatter=P.formatters.plaintext);break;case"function":i.formatter=s;break;default:i.formatter=P.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}},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){return i="function"==typeof s.params?s.params(component):s.params,s.formatter.call(this,e.getComponent(),i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}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":P.formatters[e]?e=P.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=P.formatters.plaintext);break;case"function":e=e;break;default:e=P.formatters.plaintext}return e}}P.moduleName="format",P.formatters=z;class H extends t{constructor(e){super(e),this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1,this.blocked=!0,this.registerColumnOption("frozen")}reset(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0}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("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("columns-loading",this.reset.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))}blockLayout(){this.blocked=!0}unblockLayout(){this.blocked=!1}layoutCell(e){this.layoutElement(e.element,e.column)}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}scrollHorizontal(){var e;this.active&&(clearTimeout(this.scrollEndTimer),e=this.table.rowManager.getVisibleRows(),this.calcMargins(!0),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach((e=>{"row"===e.type&&this.layoutRow(e)})))}calcMargins(e){e||(this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.rowManager.tableElement.style.marginRight=this.rightMargin),this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft}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&&e.groupList)}))}layoutColumnPosition(e){var t=[],i=0,s=0;this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.table.columnManager.element.style.paddingRight=this.rightMargin,this.leftColumns.forEach(((s,o)=>{if(s.modules.frozen.margin=i+this.table.columnManager.scrollLeft+"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)),s.modules.frozen.edge&&n.classList.add("tabulator-frozen-"+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.visible&&(s+=t.getWidth()),t.modules.frozen.margin=this.rightPadding-s+"px",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.calcMargins(),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&this.layoutRow(e)})),this.layoutCalcRows(),this.layoutColumnPosition(!0))}layoutRow(e){e.getElement().style.paddingLeft=this.leftMargin,"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){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))}_calcSpace(e,t){var i=0;for(let s=0;s-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.table.rowManager.adjustTableSize(),this.rows.push(e),this.refreshData(!1,"display"),this.styleRows())}unfreezeRow(e){this.rows.indexOf(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 O{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("row",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()}_getSelf(){return this._group}getTable(){return this._group.groupManager.table}}class _{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=>{e.stopPropagation(),e.stopImmediatePropagation(),this.toggleVisibility()}))}_createGroup(e,t){var i=t+"_"+e,s=new _(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.generateGroupHeaderContents(),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.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(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach((function(i){t=t.concat(i.getHeadersAndRows(e))})):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t}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,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(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.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}show(){if(this.visible=!0,"classic"!=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.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}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){var t=[];return this.rows.forEach((function(i){t.push(e?i.getComponent():i)})),t}generateGroupHeaderContents(){var e=[];for(this.rows.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=[],Array.isArray(e)||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])}}rowSample(e,t){var i=this.getGroups(!1)[0];return t.push(i.getRows(!1)[0]),t}virtualRenderFill(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();t=t.filter((e=>"group"!==e.type)),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}rowAddingIndex(e,t,i){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.configureGroupSetup():this.initialize(),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){!i&&t instanceof _&&(t=this.table.rowManager.prevDisplayRow(e)||t);var s=t instanceof _?t:t.modules.group,o=e instanceof _?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){e.modules.group&&e.modules.group.removeRow(e)}rowsUpdated(e){this.updateGroupRows(!0)}cellUpdated(e){this.reassignRowToGroup(e.row)}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}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.groupList.forEach((function(e){e.wipe()}))}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.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)}))}createGroup(e,t,i){var s,o=t+"_"+e;i=i||[],s=new _(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.groupList.forEach((e=>{t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0,this.displayHandler),t}scrollHeaders(e){"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))}}B.moduleName="groupRows";class N extends t{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:this.table.rowManager.getRowPosition(e),posTo:this.table.rowManager.getRowPosition(t),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().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("History Undo Error - No more history to undo"),!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("History Redo Error - No more history to redo"),!1}_rebindRow(e,t){this.history.forEach((function(i){if(i.component instanceof v)i.component===e&&(i.component=t);else if(i.component instanceof m&&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()},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)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},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)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}};class V extends t{constructor(e){super(e),this.fieldIndex=[],this.hasIndex=!1}initialize(){this.tableElementCheck()}tableElementCheck(){this.table.originalElement&&"TABLE"===this.table.originalElement.tagName&&this.parseTable()}parseTable(){var e=this.table.originalElement,t=this.table.options,i=(t.columns,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?W.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;case"text":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)}}W.moduleName="import",W.importers=I;class j extends t{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",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",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",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",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("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("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))}cellContentsSelectionFixer(e,t){if(!this.table.modExists("edit")||this.table.modules.edit.currentCell!==this){e.preventDefault();try{if(document.selection)(i=document.body.createTextRange()).moveToElementText(this.element),i.select();else if(window.getSelection){var i;(i=document.createRange()).selectNode(this.element),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 m?s=i.column.definition[e]:i instanceof b&&(s=i.definition[e]),s&&s(t,o)),this.dispatchExternal(e,t,o)}}j.moduleName="interaction";class G extends t{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,G.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)G.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:G.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)}}G.moduleName="keybindings",G.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:["ctrl + 90","meta + 90"],redo:["ctrl + 89","meta + 89"],copyToClipboard:["ctrl + 67","meta + 89"]},G.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;t.element.scrollHeight;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)},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 U extends t{constructor(e){super(e),this.menuContainer=null,this.menuElements=[],this.blurEvent=this.hideMenu.bind(this),this.escEvent=this.escMenu.bind(this),this.nestedMenuBlock=!1,this.positionReversedX=!1,this.currentComponent=null,this.columnSubscribers={},this.registerTableOption("rowContextMenu",!1),this.registerTableOption("rowClickMenu",!1),this.registerTableOption("groupContextMenu",!1),this.registerTableOption("groupClickMenu",!1),this.registerTableOption("menuContainer",!1),this.registerColumnOption("headerContextMenu"),this.registerColumnOption("headerClickMenu"),this.registerColumnOption("headerMenu"),this.registerColumnOption("contextMenu"),this.registerColumnOption("clickMenu")}initialize(){this.lookupMenuContainer(),this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}lookupMenuContainer(){this.menuContainer=this.table.options.menuContainer,"string"==typeof this.menuContainer?(this.menuContainer=document.querySelector(this.menuContainer),this.menuContainer||console.warn("Menu Error - no container element found matching selector:",this.table.options.menuContainer,"(defaulting to document body)")):!0===this.menuContainer&&(this.menuContainer=this.table.element),this.menuContainer&&!this.checkMenuContainerIsParent(this.menuContainer)&&(this.menuContainer=!1,console.warn("Menu Error - container element does not contain this table:",this.table.options.menuContainer,"(defaulting to document body)")),this.menuContainer||(this.menuContainer=document.body)}checkMenuContainerIsParent(e,t=this.table.element){return e===t||!!t.parentNode&&this.checkMenuContainerIsParent(e,t.parentNode)}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))}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))}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.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))}initializeColumnHeaderMenu(e){var t;(t=document.createElement("span")).classList.add("tabulator-header-menu-button"),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,i.getComponent(),t):e,this.loadMenu(t,i,e)}loadMenu(e,t,i,s){var o=!(e instanceof MouseEvent),n=document.createElement("div");if(n.classList.add("tabulator-menu"),o||e.preventDefault(),i&&i.length){if(!s){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout((()=>{this.nestedMenuBlock=!1}),100);this.hideMenu(),this.menuElements=[]}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.hideOldSubMenus(n),this.loadMenu(s,t,e.menu,i)})):e.action&&i.addEventListener("click",(i=>{e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),n.appendChild(i)})),n.addEventListener("click",(e=>{this.hideMenu()})),this.menuElements.push(n),this.positionMenu(n,s,o,e),this.currentComponent=t,this.dispatchExternal("menuOpened",t.getComponent())}}hideOldSubMenus(e){var t=this.menuElements.indexOf(e);if(t>-1)for(let e=this.menuElements.length-1;e>t;e--){var i=this.menuElements[e];i.parentNode&&i.parentNode.removeChild(i),this.menuElements.pop()}}positionMenu(e,t,i,o){var n,r,a;t?(n=(a=s.elOffset(t)).left+t.offsetWidth,r=a.top-1):(n=i?o.touches[0].pageX:o.pageX,r=i?o.touches[0].pageY:o.pageY,this.menuContainer!==document.body&&(n-=(a=s.elOffset(this.menuContainer)).left,r-=a.top),this.positionReversedX=!1),e.style.top=r+"px",e.style.left=n+"px",setTimeout((()=>{this.table.rowManager.element.addEventListener("scroll",this.blurEvent),document.body.addEventListener("click",this.blurEvent),document.body.addEventListener("contextmenu",this.blurEvent),window.addEventListener("resize",this.blurEvent),document.body.addEventListener("keydown",this.escEvent)}),100),this.menuContainer.appendChild(e),(n+e.offsetWidth>=this.menuContainer.offsetWidth||this.positionReversedX)&&(e.style.left="",e.style.right=t?this.menuContainer.offsetWidth-a.left+"px":this.menuContainer.offsetWidth-n+"px",this.positionReversedX=!0),r+e.offsetHeight>this.menuContainer.offsetHeight&&(e.style.top=t?parseInt(e.style.top)-e.offsetHeight+t.offsetHeight+1+"px":parseInt(e.style.top)-e.offsetHeight+"px")}isOpen(){return!!this.menuElements.length}escMenu(e){27==e.keyCode&&this.hideMenu()}hideMenu(){this.menuElements.forEach((e=>{e.parentNode&&e.parentNode.removeChild(e)})),document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent),this.currentComponent&&(this.dispatchExternal("menuClosed",this.currentComponent.getComponent()),this.currentComponent=null)}}U.moduleName="menu";class X extends t{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))}initializeColumn(e){var t,i=this,o={};e.modules.frozen||(t=e.getElement(),o.mousemove=function(o){e.parent===i.moving.parent&&((i.touchMove?o.touches[0].pageX:o.pageX)-s.elOffset(t).left+i.table.columnManager.element.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=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,t){var i=t.getElement(),o=this.table.columnManager.getElement(),n=this.table.columnManager.getHeadersElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-s.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"),this.table.columnManager.getElement().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 t,i=this.table.columnManager.getElement(),o=i.scrollLeft,n=(this.touchMove?e.touches[0].pageX:e.pageX)-s.elOffset(i).left+o;this.hoverElement.style.left=n-this.startX+"px",n-o{t=Math.max(0,o-5),this.table.rowManager.getElement().scrollLeft=t,this.autoScrollTimeout=!1}),1))),o+i.clientWidth-n{t=Math.min(i.clientWidth,o+5),this.table.rowManager.getElement().scrollLeft=t,this.autoScrollTimeout=!1}),1)))}}X.moduleName="moveColumn";class q extends t{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(e){t.tableRowDrop(e,row)}.bind(t),i.mousemove=function(i){var o;i.pageY-s.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2?t.toRow===e&&t.toRowAfter||((o=e.getElement()).parentNode.insertBefore(t.placeholderElement,o.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(o=e.getElement()).previousSibling&&(o.parentNode.insertBefore(t.placeholderElement,o),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=i}initializeRow(e){var t,i=this,o={};o.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),o.mousemove=function(t){var o=e.getElement();t.pageY-s.elOffset(o).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||(o.parentNode.insertBefore(i.placeholderElement,o.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(o.parentNode.insertBefore(i.placeholderElement,o),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=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=s-this.startY+"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.getComponent(),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)}}}q.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)}},q.prototype.senders={delete:function(e,t,i){e.delete()}},q.moduleName="moveRow";class K extends t{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")}initialize(){this.subscribe("cell-value-changing",this.transformCell.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":K.mutators[e]?t=K.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&&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}enable(){this.enabled=!0}disable(){this.enabled=!1}}K.moduleName="mutator",K.mutators={};var Y={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 J extends t{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.displayIndex=0,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)),"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:J.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||e||(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.table.footerManager.append(this.pageCounterElement)),this.table.footerManager.append(this.element,this)),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")}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}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)}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.table.rowManager.getDisplayRows(this.displayIndex-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.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":case"null":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"))}}J.moduleName="page",J.pageCounters=Y;var $={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)}},Q={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 Z extends t{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:Z.readers[this.table.options.persistenceReaderFunc]?this.readFunc=Z.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):Z.readers[this.mode]?this.readFunc=Z.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:Z.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=Z.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):Z.writers[this.mode]?this.writeFunc=Z.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,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.retreiveData("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.retreiveData("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("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("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;this.table.options;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)}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}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:function(e){s=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),s}})})),this.defWatcherBlock=!1)}load(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}retreiveData(e){return!!this.readFunc&&this.readFunc(this.id,e)}mergeDefinition(e,t){var i=[];return(t=t||[]).forEach(((t,s)=>{var o,n=this._findColumn(e,t);n&&(!0===this.config.columns||null==this.config.columns?(o=Object.keys(n)).push("width"):o=this.config.columns,o.forEach((e=>{"columns"!==e&&void 0!==t[e]&&(n[e]=t[e])})),n.columns&&(n.columns=this.mergeDefinition(n.columns,t.columns)),i.push(n))})),e.forEach(((e,s)=>{this._findColumn(t,e)||(i.length>s?i.splice(s,0,e):i.push(e))})),i}_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"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=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}}Z.moduleName="persistence",Z.moduleInitOrder=1,Z.readers=$,Z.writers=Q;class ee extends t{constructor(e){super(e),this.element=!1,this.manualBlock=!1,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&&(window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}replaceTable(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(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.genereateTable(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}}ee.moduleName="print";class te extends t{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)),this.subscribe("cell-value-save-after",this.unblock.bind(this)),this.subscribe("row-data-save-before",this.block.bind(this)),this.subscribe("row-data-save-after",this.unblock.bind(this)),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=Array.from(arguments);return i.blocked||t!==i.currentVersion||s.forEach((e=>{i.table.rowManager.addRowActual(e,!1)})),i.origFuncs.push.apply(e,arguments)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var s=Array.from(arguments);return i.blocked||t!==i.currentVersion||s.forEach((e=>{i.table.rowManager.addRowActual(e,!0)})),i.origFuncs.unshift.apply(e,arguments)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var s;return i.blocked||t!==i.currentVersion||i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[0]))&&s.deleteActual(),i.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var s;return i.blocked||t!==i.currentVersion||i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&s.deleteActual(),i.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments),n=o[0]<0?e.length+o[0]:o[0],r=o[1],a=!!o[2]&&o.slice(2);if(!i.blocked&&t===i.currentVersion){if(a&&((s=!!e[n]&&i.table.rowManager.getRowFromDataObject(e[n]))?a.forEach((e=>{i.table.rowManager.addRowActual(e,!0,s,!0)})):(a=a.slice().reverse()).forEach((e=>{i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(n,void 0===o[1]?o[1]:n+r);l.forEach(((e,t)=>{var s=i.table.rowManager.getRowFromDataObject(e);s&&s.deleteActual(t!==l.length-1)}))}(a||0!==r)&&i.table.rowManager.reRenderInPosition()}return i.origFuncs.splice.apply(e,arguments)}})}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 this.blocked=!0,t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e),this.blocked=!1}watchTreeChildren(e){var t=e.getData()[this.table.options.dataTreeChildField],i={};function s(){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}t&&(i.push=t.push,Object.defineProperty(t,"push",{enumerable:!1,configurable:!0,value:()=>{var e=i.push.apply(t,arguments);return s(),e}}),i.unshift=t.unshift,Object.defineProperty(t,"unshift",{enumerable:!1,configurable:!0,value:()=>{var e=i.unshift.apply(t,arguments);return s(),e}}),i.shift=t.shift,Object.defineProperty(t,"shift",{enumerable:!1,configurable:!0,value:()=>{var e=i.shift.call(t);return s(),e}}),i.pop=t.pop,Object.defineProperty(t,"pop",{enumerable:!1,configurable:!0,value:()=>{var e=i.pop.call(t);return s(),e}}),i.splice=t.splice,Object.defineProperty(t,"splice",{enumerable:!1,configurable:!0,value:()=>{var e=i.splice.apply(t,arguments);return s(),e}}))}watchKey(e,t,i){var s=Object.getOwnPropertyDescriptor(t,i),o=t[i],n=this.currentVersion;Object.defineProperty(t,i,{set:t=>{if(o=t,!this.blocked&&n===this.currentVersion){var r={};r[i]=t,e.updateData(r)}s.set&&s.set(t)},get:()=>(s.get&&s.get(),o)})}unwatchRow(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}block(){this.blocked=!0}unblock(){this.blocked=!1}}te.moduleName="reactiveData";class ie extends t{constructor(e){super(e),this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null,this.registerColumnOption("resizable",!0)}initialize(){this.subscribe("cell-layout",this.layoutCellHandles.bind(this)),this.subscribe("column-init",this.layoutColumnHeader.bind(this))}layoutCellHandles(e){"row"===e.row.type&&this.initializeColumn("cell",e.column,e.element)}layoutColumnHeader(e){this.initializeColumn("header",e,e.element)}initializeColumn(e,t,i){var s=this,o=!1,n=t.definition.resizable;if("header"===e&&(o="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:o}),!0===n||n==e){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var a=document.createElement("div");a.className="tabulator-col-resize-handle prev",r.addEventListener("click",(function(e){e.stopPropagation()}));var l=function(e){var i=t.getLastColumn();i&&s._checkResizability(i)&&(s.startColumn=t,s._mouseDown(e,i,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",(function(e){var i,o=t.getLastColumn();o&&s._checkResizability(o)&&(i=o.getWidth(),e.stopPropagation(),o.reinitializeWidth(!0),i!==o.getWidth()&&(s.dispatch("column-resized",o),s.table.externalEvents.dispatch("columnResized",o.getComponent())))})),a.addEventListener("click",(function(e){e.stopPropagation()}));var h=function(e){var i,o,n;(i=t.getFirstColumn())&&(n=(o=s.table.columnManager.findColumnIndex(i))>0&&s.table.columnManager.getColumnByIndex(o-1))&&s._checkResizability(n)&&(s.startColumn=t,s._mouseDown(e,n,a))};a.addEventListener("mousedown",h),a.addEventListener("touchstart",h,{passive:!0}),a.addEventListener("dblclick",(function(e){var i,o,n;(i=t.getFirstColumn())&&(n=(o=s.table.columnManager.findColumnIndex(i))>0&&s.table.columnManager.getColumnByIndex(o-1))&&s._checkResizability(n)&&(e.stopPropagation(),n.reinitializeWidth(!0))})),i.appendChild(r),i.appendChild(a)}}_checkResizability(e){return e.definition.resizable}_mouseDown(e,t,i){var s=this;function o(e){s.table.rtl?t.setWidth(s.startWidth-((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)):t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),s.table.columnManager.renderer.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.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.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}ie.moduleName="resizeColumns";class se extends t{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)}}se.moduleName="resizeRows";class oe extends t{constructor(e){super(e),this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!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 ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&!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.table.columnManager.renderer.rerenderColumns(!0),t.redraw())}})),this.observer.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.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),t.columnManager.renderer.rerenderColumns(!0),t.redraw()}})),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.currentCell)&&(t.columnManager.renderer.rerenderColumns(!0),t.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}tableResized(){this.table.rowManager.redraw()}clearBindings(){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}oe.moduleName="resizeTable";class ne extends t{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-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=this,t=!0;t;){let i="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),s=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-i;if(s<0){let i=e.columns[e.index];i?(e.hideColumn(i),e.index++):t=!1}else{let i=e.columns[e.index-1];i&&s>0&&s>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}}generateCollapsedContent(){var e=this;this.table.rowManager.getDisplayRows().forEach((function(t){e.generateCollapsedRowContent(t)}))}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=this,s=e.getData(),o=[];return this.hiddenColumns.forEach((function(n){var r=n.getFieldValue(s);if(n.definition.title&&n.field)if(n.modules.format&&i.table.options.responsiveLayoutCollapseUseFormatters){t={value:!1,data:{},getValue:function(){return r},getData:function(){return s},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return n.getComponent()}},o.push({field:n.field,title:n.definition.title,value:n.modules.format.formatter.call(i.table.modules.format,t,n.modules.format.params,(function(e){e()}))})}else o.push({field:n.field,title:n.definition.title,value:r})})),o}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:""}}ne.moduleName="responsiveLayout";class re extends t{constructor(e){super(e),this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null,this.registerTableOption("selectable","highlight"),this.registerTableOption("selectableRangeMode","drag"),this.registerTableOption("selectableRollingSelection",!0),this.registerTableOption("selectablePersistence",!0),this.registerTableOption("selectableCheck",(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(){!1!==this.table.options.selectable&&(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.selectable&&!this.table.options.selectablePersistence&&this.subscribe("data-refreshing",this.deselectRows.bind(this)))}rowRetrieve(e,t){return"selected"===e?this.selectedRows:t}rowDeleted(e){this._deselectRow(e,!0)}clearSelectionData(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],!0!==e&&this._rowSelectionChanged()}initializeRow(e){var t=this,i=e.getElement(),s=function(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",s)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(i.classList.add("tabulator-selectable"),i.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?i.addEventListener("click",this.handleComplexRowClick.bind(this,e)):(i.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),i.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",s),document.body.addEventListener("keyup",s),t.toggleRow(e),!1})),i.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),i.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))):(i.classList.add("tabulator-unselectable"),i.classList.remove("tabulator-selectable"))}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.selectable||this.isRowSelected(e)||this.selectedRows.lengththis.table.options.selectable&&(r=r.slice(0,this.table.options.selectable)),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)}toggleRow(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}selectRows(e){var t;switch(typeof e){case"undefined":this.table.rowManager.rows.forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;case"string":(t=this.table.rowManager.findRow(e))?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}}_selectRow(e,t,i){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!i&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var s=this.table.rowManager.findRow(e);s?-1==this.selectedRows.indexOf(s)&&(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)):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=this;if(void 0===e){i=s.selectedRows.length;for(let e=0;e-1&&(o.getElement().classList.remove("tabulator-selected"),o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.modules.select.checkboxEl&&(o.modules.select.checkboxEl.checked=!1),s.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(o,!1),this.dispatchExternal("rowDeselected",o.getComponent()),s._rowSelectionChanged(t)):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){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||this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows())}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 ae(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(e="iso"===l?a.fromISO(String(e)):a.fromFormat(String(e),l),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")}re.moduleName="selectRow";var le={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"),ae.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"),ae.call(this,e,t,i,s,o,n,r)},datetime:ae,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){switch(a){case"length":return e.length;case"sum":return e.reduce((function(e,t){return e+t}));case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce((function(e,t){return e+t}))/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?d(e):0)-(t?d(t):0);l=1}else l=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 he extends t{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.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":he.sorters[e.definition.sorter]?s=he.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort&&((t=e.getElement()).classList.add("tabulator-sortable"),(i=document.createElement("div")).classList.add("tabulator-col-sorter"),"object"==typeof this.table.options.headerSortElement?i.appendChild(this.table.options.headerSortElement):i.innerHTML=this.table.options.headerSortElement,e.titleHolderElement.appendChild(i),e.modules.sort.element=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())))>-1?(s[o].dir=i,o!=s.length-1&&(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():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 he.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.modules.sort;e.column&&o&&(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((function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))}))}setColumnHeader(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)}_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)}}he.moduleName="sort",he.sorters=le;var de={integer:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(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)},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("|")),""===t||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 ce extends t{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))}cellIsValid(e){return!e.modules.validate||!e.modules.validate.invalid}cellValidate(e){return this.validate(e.column.modules.validate,e,e.getValue())}columnValidate(e){var t=[];return e.cells.forEach((e=>{this.cellValidate(e)||t.push(e.getComponent())})),!t.length||t}rowValidate(e){var t=[];return e.cells.forEach((e=>{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:ce.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})})),o=!o.length||o,t.modules.validate||(t.modules.validate={}),!0===o?(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),n>-1&&this.invalidCells.splice(n,1)):(t.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==n&&this.invalidCells.push(t)),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))}}ce.moduleName="validate",ce.validators=de;var ue=Object.freeze({__proto__:null,AccessorModule:o,AjaxModule:h,ClipboardModule:d,ColumnCalcsModule:C,DataTreeModule:E,DownloadModule:R,EditModule:T,ExportModule:D,FilterModule:F,FormatModule:P,FrozenColumnsModule:H,FrozenRowsModule:A,GroupRowsModule:B,HistoryModule:N,HtmlTableImportModule:V,ImportModule:W,InteractionModule:j,KeybindingsModule:G,MenuModule:U,MoveColumnsModule:X,MoveRowsModule:q,MutatorModule:K,PageModule:J,PersistenceModule:Z,PrintModule:ee,ReactiveDataModule:te,ResizeColumnsModule:ie,ResizeRowsModule:se,ResizeTableModule:oe,ResponsiveLayoutModule:ne,SelectRowModule:re,SortModule:he,ValidateModule:ce});class me{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);if(Object.assign(i,e),!1!==t.debugInvalidOptions||this.table.options.debugInvalidOptions)for(var s in t)i.hasOwnProperty(s)||console.warn("Invalid "+this.msgType+" option:",s);for(var s in i)s in t?i[s]=t[s]:Array.isArray(i[s])?i[s]=Object.assign([],i[s]):"object"==typeof i[s]&&null!==i[s]?i[s]=Object.assign({},i[s]):void 0===i[s]&&delete i[s];return i}}class pe 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 o=this.rows().indexOf(e),n=e.getElement(),r=0;return new Promise(((a,l)=>{if(o>-1){if(void 0===i&&(i=this.table.options.scrollToRowIfVisible),!i&&s.elVisible(n)&&(r=s.elOffset(n).top-s.elOffset(this.elementVertical).top)>0&&r{e.element.appendChild(t.getElement()),t.cellRendered()}))}reinitializeColumnWidths(e){e.forEach((function(e){e.reinitializeWidth()}))}}class be extends pe{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(){var e=this.options("columns"),t=!0;return"fitDataTable"==this.options("layout")&&(console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"),t=!1),this.options("responsiveLayout")&&(console.warn("Horizontal Virtual DOM is not compatible with responsive columns"),t=!1),this.options("rtl")&&(console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction"),t=!1),e&&e.find((e=>e.frozen))&&(console.warn("Horizontal Virtual DOM is not compatible with frozen columns"),t=!1),t}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={};if(e.visible){var i=e.getWidth();t.leftPos=s,t.rightPos=s+i,t.width=i,this.isFitData&&(t.fitDataCheck=!e.modules.vdomHoz||e.modules.vdomHoz.fitDataCheck),s+i>this.vDomScrollPosLeft&&s{e.element.appendChild(t.getElement()),t.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,s=0;if(this.isFitData){if(this.table.columnManager.columnsByIndex.forEach((e=>{!e.definition.width&&e.visible&&(i=!0)})),i&&i&&this.table.rowManager.getDisplayRows().length&&(this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.windowBuffer,t=this.chain("rows-sample",[1],[],(()=>this.table.rowManager.getDisplayRows()))[0])){e=t.getElement(),t.generateCells(),this.tableElement.appendChild(e);for(s=0;s{e!==this.columns[i]&&(t=!1)})),!t)}reinitializeRows(){this.getVisibleRows().forEach((e=>{this.reinitializeRow(e,!0)}))}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 i=e.getCell(t);e.getElement().appendChild(i.getElement()),i.cellRendered()}})),this.fitDataColActualWidthCheck(t),this.rightCol++,this.rightCol>=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=t.getWidth()}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}addColLeft(){for(var e=!1;;){let t=this.columns[this.leftCol-1];if(!t)break;if(!(t.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft))break;{e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var i=e.getCell(t);e.getElement().prepend(i.getElement()),i.cellRendered()}})),this.leftCol--,this.leftCol<=0?this.vDomPadLeft=0:this.vDomPadLeft-=t.getWidth();let i=this.fitDataColActualWidthCheck(t);i&&(this.scrollLeft=this.elementVertical.scrollLeft=this.elementVertical.scrollLeft+i,this.vDomPadRight-=i)}}e&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}removeColRight(){for(var e=!1;;){let t=this.columns[this.rightCol];if(!t)break;if(!(t.modules.vdomHoz.leftPos>this.vDomScrollPosRight))break;e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var i=e.getCell(t);try{e.getElement().removeChild(i.getElement())}catch(e){console.warn("Could not removeColRight",e.message)}}})),this.vDomPadRight+=t.getWidth(),this.rightCol--}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}removeColLeft(){for(var e=!1;;){let t=this.columns[this.leftCol];if(!t)break;if(!(t.modules.vdomHoz.rightPos{if("group"!==e.type){var i=e.getCell(t);try{e.getElement().removeChild(i.getElement())}catch(e){console.warn("Could not removeColLeft",e.message)}}})),this.vDomPadLeft+=t.getWidth(),this.leftCol++}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};for(let t=this.leftCol;t<=this.rightCol;t++){let i=this.columns[t];if(i&&i.visible){let t=e.getCell(i);e.getElement().appendChild(t.getElement()),t.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 fe extends e{constructor(e){super(e),this.blockHozScrollEvent=!1,this.headersElement=null,this.element=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.optionsList=new me(this.table,"column definition",g),this.renderer=null}initialize(){this.initializeRenderer(),this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.element.insertBefore(this.headersElement,this.element.firstChild),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this))}initializeRenderer(){var e,t={virtual:be,basic:ge};(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:",table.options.renderHorizontal)}createHeadersElement(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e.setAttribute("role","row"),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}getHeadersElement(){return this.headersElement}scrollHorizontal(e){var t=0,i=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>i?(t=e-i,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.renderer.scrollColumns(e)}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.renderer.rerenderColumns(!1,!0),this.redraw(!0)}_addColumn(e,t,i){var s=new b(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.columns.forEach((t=>{var i;t.clearVerticalAlign(),(i=t.getHeight())>e&&(e=i)})),this.columns.forEach((t=>{t.verticalAlign(this.table.options.columnHeaderVertAlign,e)})),this.table.rowManager.adjustTableSize()}findColumn(e){if("object"!=typeof e)return this.columnsByField[e]||!1;if(e instanceof b)return e;if(e instanceof p)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return this.columns.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=>{i.split(".")[0]===e&&t.push(this.columnsByField[i])})),t}getColumnByIndex(e){return this.columnsByIndex[e]}getFirstVisibleColumn(e){return(e=this.columnsByIndex.findIndex((e=>e.visible)))>-1&&this.columnsByIndex[e]}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){this.moveColumnActual(e,t,i),t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),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.renderer.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=0,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=r.offsetLeft)>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.renderer.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()}redraw(e){s.elVisible(this.element)&&this.verticalAlignHeaders(),e&&(this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}class ve extends pe{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;this.rows().forEach(((i,s)=>{this.styleRow(i,s),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(t=!1)})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}rerenderRows(e){this.clearRows(),this.renderRows(),e&&e()}scrollToRowNearestTop(e){var t=s.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=s.elOffset(t).top-s.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}visibleRows(e){return this.rows()}}class we extends pe{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._virtualRenderFill(!1===i?this.rows.length-1:i,!0,s||0),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 o=this.tableElement,n=this.elementVertical,r=0,a=0,l=0,h=0,d=0,c=this.rows(),u=c.length,m=this.elementVertical.clientHeight;if(i=i||0,e=e||0){for(;o.firstChild;)o.removeChild(o.firstChild);(l=(u-e+1)*this.vDomRowHeight)this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*p),this.vDomBottom++,d++}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+i:this.scrollTop-h,this.vDomBottomPad=this.vDomBottom==u-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-a-h,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((a+h)/d),this.vDomBottomPad=this.vDomRowHeight*(u-this.vDomBottom-1),this.vDomScrollHeight=h+a+this.vDomBottomPad-m),o.style.paddingTop=this.vDomTopPad+"px",o.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+h+i-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-m:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-m),this.elementVertical.scrollWidth>this.elementVertical.offsetWidth&&t&&(this.scrollTop+=this.elementVertical.offsetHeight-m),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,n.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;this.vDomTop;){let a,l,h=e[n];if(!(h&&r=a))break;this.styleRow(h,n),i.insertBefore(h.getElement(),i.firstChild),h.initialized&&h.heightInitialized||s.push(h),h.initialize(),l||(a=h.getElement().offsetHeight,a>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*a)),t-=a,o+=a,this.vDomTop--,n--,r++}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;;){let n,r=e[this.vDomTop];if(!(r&&o=n))break;this.vDomTop++,t-=n,s+=n,i.push(r),o++}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;;){let a,l,h=e[n];if(!(h&&r=a))break;this.styleRow(h,n),i.appendChild(h.getElement()),h.initialized&&h.heightInitialized||s.push(h),h.initialize(),l||(a=h.getElement().offsetHeight,a>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*a)),t-=a,o+=a,this.vDomBottom++,n++,r++}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;;){let n,r=e[this.vDomBottom];if(!(r&&o=n))break;this.vDomBottom--,t-=n,s+=n,i.push(r),o++}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 Ce 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.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRenderInPosition=!1,this.dataPipeline=[],this.displayPipeline=[],this.renderer=null}createHolderElement(){var e=document.createElement("div");return e.classList.add("tabulator-tableholder"),e.setAttribute("tabindex",0),e.setAttribute("role","rowgroup"),e}createTableElement(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e.setAttribute("role","rowgroup"),e}initializePlaceholder(){if("string"==typeof this.table.options.placeholder){let e=document.createElement("div");e.classList.add("tabulator-placeholder");let t=document.createElement("div");t.classList.add("tabulator-placeholder-contents"),t.innerHTML=this.table.options.placeholder,e.appendChild(t),this.placeholderContents=t,this.placeholder=e}}getElement(){return this.element}getTableElement(){return this.tableElement}getRowPosition(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)}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(null==e)return!1;return this.rows.find((t=>t.data[this.table.options.index]==e))||!1}if(e instanceof v)return e;if(e instanceof f)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,t){return t?this.activeRows[e]:this.rows[e]}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 v(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.rows.forEach((e=>{e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.adjustTableSize()}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.regenerateRowNumbers(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this._showPlaceholder(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}addRow(e,t,i,s){return this.addRowActual(e,t,i,s)}addRows(e,t,i){var s=[];return new Promise(((o,n)=>{t=this.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length,(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach(((o,n)=>{var r=this.addRow(o,t,i,!0);s.push(r),this.dispatch("row-added",r,e,t,i)})),this.refreshActiveData(!1,!1,!0),this.regenerateRowNumbers(),s.length&&this._clearPlaceholder(),o(s)}))}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 v?e:new v(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.regenerateRowNumbers(),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 o=this.table,n="",r=0,a=["all","dataPipeline","display","displayPipeline","end"];if("function"==typeof e)if((r=this.dataPipeline.findIndex((t=>t.handler===e)))>-1)n="dataPipeline",t&&(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",t&&(r==this.displayPipeline.length-1?n="end":r++)}else n=e||"all",r=0;this.redrawBlock?(!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===n&&r{var t=e.getCell(this.rowNumColumn);t&&t._generateContents()}))}setActiveRows(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length}resetDisplayRows(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length}getNextDisplayIndex(){return this.displayRows.length}setDisplayRows(e,t){var i=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,i=!0):(this.displayRows.push(e),i=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),i}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.renderer.rerenderRows(e)}initializeRenderer(){var e,t={virtual:we,basic:ve};(e="string"==typeof this.table.options.renderVertical?t[this.table.options.renderVertical]: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.fixedHeight=!0:this.fixedHeight=!1):console.error("Unable to find matching renderer:",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.layoutRefresh())):this.renderEmptyScroll(),this.fixedHeight||this.adjustTableSize(),this.dispatch("table-layout"),this.displayRowsCount||this._showPlaceholder(),this.dispatchExternal("renderComplete")}renderEmptyScroll(){this.placeholder?this.tableElement.style.display="none":this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px"}_clearTable(){this.tableElement;this._clearPlaceholder(),this.scrollTop=0,this.scrollLeft=0,this.renderer.clearRows()}_showPlaceholder(){this.placeholder&&(this.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.placeholder),this._positionPlaceholder())}_clearPlaceholder(){this.placeholder&&this.placeholder.parentNode&&this.placeholder.parentNode.removeChild(this.placeholder)}_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(){var e=this.element.clientHeight;if("fill"===this.renderer.verticalFillMode){let t=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));this.fixedHeight?(this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-t+"px",this.element.scrollTop=this.scrollTop),this.renderer.resize(),this.fixedHeight||e==this.element.clientHeight||(this.subscribed("table-resize")?this.dispatch("table-resize"):this.redraw())}this._positionPlaceholder()}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){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():(this.reRenderInPosition(),this.scrollHorizontal(t))}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 Ee extends e{constructor(e){super(e),this.active=!1,this.element=this.createElement(),this.containerElement=this.createContainerElement(),this.external=!1,this.links=[]}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)switch(typeof this.table.options.footerElement){case"string":"<"===this.table.options.footerElement[0]?this.containerElement.innerHTML=this.table.options.footerElement:(this.external=!0,this.containerElement=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}}getElement(){return this.element}append(e,t){this.activate(t),this.containerElement.appendChild(e),this.table.rowManager.adjustTableSize()}prepend(e,t){this.activate(t),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(e){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),e&&this.links.push(e)}redraw(){this.links.forEach((function(e){e.footerRedraw()}))}}class ye 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","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,i),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]]=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={};for(let e of i){let i,n=t[e],r=this.previousTargets[e];if(r&&r.target===n)i=r.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()===n)),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(n));break;case"cell":s.components.includes("cell")&&(t.row instanceof v?i=t.row.findCell(n):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&&(t[e]=i,o[e]={target:n,component:i})}return this.previousTargets=o,t}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 Re{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,hanlder):this.bindings[e][t]=i}handle(e,t,i){if(this.bindings[e]&&this.bindings[e][i])return this.bindings[e][i].bind(null,t);"then"===i||"string"!=typeof i||i.startsWith("_")||console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}class xe extends e{constructor(e){super(e),this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=null,this.errorElement=null,this.requestOrder=0,this.loading=!1}initialize(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.dataLoaderLoading&&("string"==typeof this.table.options.dataLoaderLoading?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderLoading.trim(),this.loadingElement=e.firstElementChild):this.loadingElement=this.table.options.dataLoaderLoading),this.table.options.dataLoaderError&&("string"==typeof this.table.options.dataLoaderError?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderError.trim(),this.errorElement=e.firstElementChild):this.errorElement=this.table.options.dataLoaderError)}createLoaderElement(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e}createMsgElement(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e}load(e,t,i,s,o){var n=++this.requestOrder;return 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.showLoader(),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=>{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);n==this.requestOrder?(this.hideLoader(),!1!==t&&(this.dispatchExternal("dataLoaded",t),this.table.rowManager.setData(t,s,!s))):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.showError(),setTimeout((()=>{this.hideLoader()}),this.table.options.dataLoaderErrorTimeout)})).finally((()=>{this.loading=!1}))):(this.dispatchExternal("dataLoaded",e),e||(e=[]),this.table.rowManager.setData(e,s,!s),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++}showLoader(){if("function"==typeof this.table.options.dataLoader?this.table.options.dataLoader():this.table.options.dataLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.langText("data|loading"),this.table.element.appendChild(this.loaderElement)}}showError(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.langText("data|error"),this.table.element.appendChild(this.loaderElement)}hideLoader(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)}}class Me{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._notifiySubscriptionChange(e,!0)}subscribe(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifiySubscriptionChange(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._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_notifiySubscriptionChange(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 Te{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._notifiySubscriptionChange(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._notifiySubscriptionChange(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._notifiySubscriptionChange(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}_notifiySubscriptionChange(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 Le{static register(e){Le.tables.push(e)}static deregister(e){var t=Le.tables.indexOf(e);t>-1&&Le.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)&&(o=e),e.visible&&(t+=e.getWidth())})),o?(s=i-t+o.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(o.setWidth(0),this.table.modules.responsiveLayout.update()),s>0?o.setWidth(s):o.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,i,s=this.table.element.clientWidth,o=0,n=0,r=0,a=[],l=[],h=0,d=0;function c(e){return"string"==typeof e?e.indexOf("%")>-1?s/100*parseInt(e):parseInt(e):e}function u(e,t,i,s){var o=[],n=0,a=0,l=0,h=r,d=0,m=0,p=[];function g(e){return i*(e.column.definition.widthGrow||1)}function b(e){return c(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&&(s-=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=c(t),o+=s>i?s:i,e.definition.widthShrink&&(l.push({column:e,width:s>i?s:i}),h+=e.definition.widthShrink)):(a.push({column:e,width:0}),r+=e.definition.widthGrow||1))})),n=s-o,t=Math.floor(n/r),d=u(a,n,t,!1),a.length&&d>0&&(a[a.length-1].width+=+d),a.forEach((function(e){n-=e.width})),(i=Math.abs(d)+n)>0&&h&&(d=u(l,i,Math.floor(i/h),!0)),l.length&&(l[l.length-1].width-=d),a.forEach((function(e){e.column.setWidth(e.width)})),l.forEach((function(e){e.column.setWidth(e.width)}))}};class Se extends t{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;Se.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)}getMode(){return this.mode}layout(){this.dispatch("layout-refreshing"),Se.modes[this.mode].call(this,this.table.columnManager.columnsByIndex),this.dispatch("layout-refreshed")}}Se.moduleName="layout",Se.modes=De;class Fe extends t{constructor(e){super(e),this.locale="default",this.lang=!1,this.bindings={},this.langList={},this.registerTableOption("locale",!1),this.registerTableOption("langs",{})}initialize(){this.langList=s.deepClone(Fe.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}setHeaderFilterColumnPlaceholder(e,t){this.langList.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)}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=s.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=(e=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)}))}}Fe.moduleName="localize",Fe.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 ze extends t{constructor(e){super(e)}initialize(){this.registerTableFunction("tableComms",this.receive.bind(this))}getConnections(e){var t=[];return Le.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)}}ze.moduleName="comms";var Pe=Object.freeze({__proto__:null,LayoutModule:Se,LocalizeModule:Fe,CommsModule:ze});class He{constructor(e,t){this.bindStaticFuctionality(e),this.bindModules(e,Pe,!0),t&&this.bindModules(e,t)}bindStaticFuctionality(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=Le.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},e.prototype.bindModules=function(){var t=[],i=[];for(var s in this.modules={},e.moduleBindings){let o=e.moduleBindings[s],n=new o(this);this.modules[s]=n,o.prototype.moduleCore?this.modulesCore.push(n):o.moduleInitOrder?t.push(n):i.push(n)}t.sort(((e,t)=>e.moduleInitOrder>t.moduleInitOrder?1:-1)),this.modulesRegular=t.concat(i)}}bindModules(e,t,i){var s=Object.values(t);i&&s.forEach((e=>{e.prototype.moduleCore=!0})),e.registerModule(s)}}class Ae{constructor(e,t){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=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 Re(this),this.dataLoader=!1,this.modules={},this.modulesCore=[],this.modulesRegular=[],this.optionsList=new me(this,"table constructor"),this.initialized=!1,this.initializeElement(e)&&(this.initializeCoreSystems(t),setTimeout((()=>{this._create()}))),Le.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 fe(this),this.rowManager=new Ce(this),this.footerManager=new Ee(this),this.dataLoader=new xe(this),this.bindModules(),this.options=this.optionsList.generate(Ae.defaultOptions,e),this._clearObjectPointers(),this._mapDeprecatedFunctionality(),this.externalEvents=new Me(this,this.options,this.options.debugEventsExternal),this.eventBus=new Te(this.options.debugEventsInternal),this.interactionMonitor=new ye(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)}destroy(){var e=this.element;for(Le.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.rows.forEach((function(e){e.wipe()})),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[];e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")}_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):(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))}blockRedraw(){return this.rowManager.blockRedraw()}restoreRedraw(){return this.rowManager.restoreRedraw()}setData(e,t,i){if(this.initialized)return this.dataLoader.load(e,t,i,!1);console.warn("setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.")}clearData(){this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}getData(e){return this.rowManager.getData(e)}getDataCount(e){return this.rowManager.getDataCount(e)}replaceData(e,t,i){if(this.initialized)return this.dataLoader.load(e,t,i,!0,!0);console.warn("replaceData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}updateData(e){var t=0;if(this.initialized)return new Promise(((i,s)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((e=>{var s=this.rowManager.findRow(e[this.options.index]);s&&(t++,s.updateData(e).then((()=>{--t||i()})))})):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))}));console.warn("updateData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}addData(e,t,i){if(this.initialized)return 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"))}));console.warn("addData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}updateOrAddData(e){var t=[],i=0;if(this.initialized)return new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?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"))}));console.warn("updateOrAddData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}getRow(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}getRowFromPosition(e,t){var i=this.rowManager.getRowFromPosition(e,t);return i?i.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}deleteRow(e){var t=[];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){if(this.initialized)return"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i).then((e=>e[0].getComponent()));console.warn("addRow failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}updateOrAddRow(e,t){var i=this.rowManager.findRow(e);return"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"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);s?s.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}getRows(e){return this.rowManager.getComponents(e)}getRowPosition(e,t){var i=this.rowManager.findRow(e);return i?this.rowManager.getRowPosition(i,t):(console.warn("Position Error - No matching row found:",e),!1)}setColumns(e){this.initialized?this.columnManager.setColumns(e):console.warn("setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.")}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(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show()}hideColumn(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide()}toggleColumn(e){var t=this.columnManager.findColumn(e);if(!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.columnManager.addColumn(e,t,s).then((e=>e.getComponent()))}deleteColumn(e){var t=this.columnManager.findColumn(e);return 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 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);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.initialized?(this.columnManager.redraw(e),this.rowManager.redraw(e)):console.warn("redraw failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.")}setHeight(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw()}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)}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}}Ae.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,height:!1,minHeight:!1,maxHeight:!1,columnHeaderVertAlign:"top",columns:[],columnDefaults:{},data:!1,autoColumns:!1,autoColumnsDefinitions:!1,nestedFieldSeparator:".",tooltipGenerationMode:"load",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,placeholder:!1,dataLoader:!0,dataLoaderLoading:!1,dataLoaderError:!1,dataLoaderErrorTimeout:3e3,dataSendParams:{},dataReceiveParams:{}},new He(Ae);class Oe extends Ae{}new He(Oe,ue);class _e{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(){}}export{o as AccessorModule,h as AjaxModule,c as CalcComponent,u as CellComponent,d as ClipboardModule,C as ColumnCalcsModule,p as ColumnComponent,E as DataTreeModule,R as DownloadModule,T as EditModule,D as ExportModule,F as FilterModule,P as FormatModule,H as FrozenColumnsModule,A as FrozenRowsModule,O as GroupComponent,B as GroupRowsModule,N as HistoryModule,V as HtmlTableImportModule,W as ImportModule,j as InteractionModule,G as KeybindingsModule,U as MenuModule,t as Module,X as MoveColumnsModule,q as MoveRowsModule,K as MutatorModule,J as PageModule,Z as PersistenceModule,ee as PrintModule,_e as PseudoRow,te as ReactiveDataModule,pe as Renderer,ie as ResizeColumnsModule,se as ResizeRowsModule,oe as ResizeTableModule,ne as ResponsiveLayoutModule,f as RowComponent,re as SelectRowModule,he as SortModule,Ae as Tabulator,Oe as TabulatorFull,ce as ValidateModule}; +/* Tabulator v5.2.2 (c) Oliver Folkerd 2022 */ +class e{constructor(e){this.table=e}reloadData(e,t){return this.table.dataLoader.load(e,void 0,void 0,void 0,t)}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(){return this.table.modules.layout.layout()}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]}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 deepClone(e,t,i=[]){var s={}.__proto__,o=[].__proto__;for(var n in t||(t=Object.assign(Array.isArray(e)?[]:{},e)),e){let r,a,l=e[n];null==l||"object"!=typeof l||l.__proto__!==s&&l.__proto__!==o||(r=i.findIndex((e=>e.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 s 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.renderedCallback=null,this.visible=!1,this.element.classList.add("tabulator-popup-container"),this.blurEvent=this.hide.bind(this,!1),this.escEvent=this._escapeCheck.bind(this)}_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}return{x:o,y:n,offset:r}}show(e,t){var i,s,o,n,r;return 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}_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)switch(o){case"bottom":this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight-i.offsetHeight-1+"px";break;default: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.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),window.addEventListener("resize",this.blurEvent),document.body.addEventListener("keydown",this.escEvent)}),100),this.blurCallback=e),this}_escapeCheck(e){27==e.keyCode&&this.hide()}hide(e=!1){return this.visible&&(this.blurable&&(document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent),this.unsubscribe("cell-editing",this.blurEvent)),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}child(e){return this.childPopup&&this.childPopup.hide(),this.childPopup=new s(this.table,e,this),this.childPopup}}class o 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}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 s(this.table,e,t)}alert(e,t){return this.table.alertManager.alert(e,t)}clearAlert(){return this.table.alertManager.clear()}}class n extends o{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":n.accessors[e]?t=n.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}}n.moduleName="accessor",n.accessors={};function r(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(r(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(r(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}function a(e){var t=r(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}function l(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+a(i))),e}function h(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(h(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(h(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}var d={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var s=h(i),o=new FormData;return s.forEach((function(e){o.append(e.key,e.value)})),o}}};class c extends o{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=c.contentTypeFormatters}initialize(){this.loaderPromise=this.table.options.ajaxRequestFunc||c.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||c.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(s,o)),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({},c.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()}}c.moduleName="ajax",c.defaultConfig={method:"GET"},c.defaultURLGenerator=l,c.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([]))}))},c.contentTypeFormatters=d;class u extends o{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;if(!this.blocked){if(e.preventDefault(),this.customSelection)t=this.customSelection,this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t));else{var s=this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig,this.table.options.clipboardCopyStyled,this.rowRange,"clipboard");t=(i=this.table.modules.export.genereateHTMLTable(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=u.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=u.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.checkPaseOrigin(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}checkPaseOrigin(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(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}}u.moduleName="clipboard",u.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)}},u.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)}};class m{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 p{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(){return this._cell.row.getData()}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 g 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"),this.element=this.element}_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":case"null":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 p(this)),this.component}}class b{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 v&&this._column.parent.getComponent()}_getSelf(){return this._column}scrollTo(){return this._column.table.columnManager.scrollToColumn(this._column)}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.renderer.rerenderColumns(!0),t}}var f={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,editableTitle:void 0};class v 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 v(e,this);this.attachColumn(i)})),this.checkColumnVisibility()):t.registerColumnField(this),this._initialize(),this.bindModuleColumns()}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),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(v.defaultOptionList,this.definition)}checkDefinition(){Object.keys(this.definition).forEach((e=>{-1===v.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)}_mapDepricatedFunctionality(){}_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._bindEvents(),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.dispatch("column-init",this)}_bindEvents(){var e,t,i,s=this.definition;"function"==typeof s.headerClick&&this.element.addEventListener("click",(e=>{s.headerClick(e,this.getComponent())})),"function"==typeof s.headerDblClick&&this.element.addEventListener("dblclick",(e=>{s.headerDblClick(e,this.getComponent())})),"function"==typeof s.headerContext&&this.element.addEventListener("contextmenu",(e=>{s.headerContext(e,this.getComponent())})),"function"==typeof s.headerTap&&(i=!1,this.element.addEventListener("touchstart",(e=>{i=!0}),{passive:!0}),this.element.addEventListener("touchend",(e=>{i&&s.headerTap(e,this.getComponent()),i=!1}))),"function"==typeof s.headerDblTap&&(e=null,this.element.addEventListener("touchend",(t=>{e?(clearTimeout(e),e=null,s.headerDblTap(t,this.getComponent())):e=setTimeout((()=>{clearTimeout(e),e=null}),300)}))),"function"==typeof s.headerTapHold&&(t=null,this.element.addEventListener("touchstart",(e=>{clearTimeout(t),t=setTimeout((function(){clearTimeout(t),t=null,i=!1,s.headerTapHold(e,this.getComponent())}),1e3)}),{passive:!0}),this.element.addEventListener("touchend",(e=>{clearTimeout(t),t=null})))}_buildColumnHeader(){var e=this.definition;this.table;(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(){this.definition,this.table;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.editableTitle){var i=document.createElement("input");i.classList.add("tabulator-title-editor"),i.addEventListener("click",(e=>{e.stopPropagation(),i.focus()})),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":case"null":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-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}getHeight(){return Math.ceil(this.element.getBoundingClientRect().height)}setMinWidth(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}setMaxWidth(e){this.maxWidth=e,this.maxWidthStyled=e?e+"px":"",this.element.style.maxWidth=this.maxWidthStyled,this.cells.forEach((function(e){e.setMaxWidth()}))}delete(){return new Promise(((e,t)=>{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 b(this)),this.component}}v.defaultOptionList=f;class w{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(e){return this._row.table.rowManager.getRowPosition(this._row,e)}delete(){return this._row.delete()}scrollTo(){return this._row.table.rowManager.scrollToRow(this._row)}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 C 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.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){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),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)}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)=>{for(var r in"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))this.data[r]=i[r];for(var r in this.dispatch("row-data-save-after",this),e){this.table.columnManager.getColumnsByFieldRoot(r).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||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||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.table.rowManager.getRowIndex(this);this.detatchModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}detatchModules(){this.dispatch("row-deleting",this)}deleteCells(){var e=this.cells.length;for(let t=0;ts||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)){this.recalcGroup(e)})))}recalcGroup(e){var t,i;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 C(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 m(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 g(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}}}y.moduleName="columnCalcs",y.calculations=E;class R extends o{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.displayIndex=0,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,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),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.registerDisplayHandler(this.getRows.bind(this),30)}}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=(t=t||e.getCells()[0].getElement(),i.controlEl);!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))}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}getRows(e){var t=[];return e.forEach(((e,i)=>{var s;t.push(e),e instanceof C&&(e.create(),(s=e.modules.dataTree.children).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 C(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()}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 C&&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 C?i=e.data:e instanceof RowComponent?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.modules.dataTree&&(i=t.modules.dataTree.children.find((t=>t instanceof C&&t.element===e)))&&(i=i.data):i=null!=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.children&&(Array.isArray(s.children)||(s.children=this.generateChildren(e)),s.children.forEach((e=>{e instanceof C&&(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]}}R.moduleName="dataTree";var x={csv:function(e,t,i){var s=t&&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=JSON.stringify(e.value);break;case"undefined":case"null":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&&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=JSON.stringify(e.value);break;case"undefined":case"null":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&&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&&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);function a(){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(n.SheetNames=[],n.Sheets={},i.sheetOnly)s(a());else{if(i.sheets)for(var l in i.sheets)!0===i.sheets[l]?(n.SheetNames.push(l),n.Sheets[l]=a()):(n.SheetNames.push(l),r.commsSend(i.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){n.Sheets[l]=e}}));else n.SheetNames.push(o),n.Sheets[o]=a();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,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.genereateHTMLTable(e),"text/html")}};class T extends o{constructor(e){super(e),this.registerTableOption("downloadReady",(function(e,t){return t})),this.registerTableOption("downloadConfig",{}),this.registerTableOption("downloadRowRange","active"),this.registerColumnOption("download"),this.registerColumnOption("titleDownload")}initialize(){this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}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:T.downloaders[e]?n=T.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=new Blob([e],{type:t});s=s||"Tabulator."+("function"==typeof i?"txt":i);(r=this.table.options.downloadReady(e,r))&&(o?window.open(window.URL.createObjectURL(r)):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){switch(t){case"intercept":this.download(i.type,"",i.options,i.active,i.intercept)}}}function M(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){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)}T.moduleName="download",T.downloaders=x;class L{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=!t._getSelf,this.filterTimeout=null,this.filtered=!1,this.typing=!1,this.values=[],this.popup=null,this.listIteration=0,this.blurable=!0,this.actions={success:s,cancel:o},this._deprecationCheck(),this._initializeValue(),i(this._onRendered.bind(this))}_deprecationCheck(){this.params.listItemFormatter&&console.warn("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.sortValuesList&&console.warn("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchFunc&&console.warn("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchingPlaceholder&&console.warn("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.join(","),this.headerFilterInitialListGen())}_onRendered(){var e=this.cell.getElement();function t(e){e.stopPropagation()}this.input.style.height="100%",this.input.focus({preventScroll:!0}),e.addEventListener("click",t),setTimeout((()=>{e.removeEventListener("click",t)}),1e3)}_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&&M(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,0)&&(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()}_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: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)}}_preventBlur(){this.blurable=!1,setTimeout((function(){this.blurable=!0}),10)}_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.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.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(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(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=l(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.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){e=String(e).toLowerCase();return(null!==t||void 0!==t)&&(String(t).toLowerCase().indexOf(e)>-1||String(i).toLowerCase(e).indexOf()>-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&&this.popup)return void this.popup.hide(!0);this._setListWidth(),this.popup||(this.popup=this.edit.popup(this.listEl)),this.popup.show(this.cell.getElement(),"bottom"),e||this.popup.hideOnBlur(this._resolveValue.bind(this,!0))}}_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.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=this.initialValues[0])||""===i?i:this.params.emptyValue;""===t&&(t=this.params.emptyValue),this.actions.success(t),this.isFilter&&(this.initialValues=t&&!Array.isArray[t]?[t]:t)}}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(){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&&M(r,o),r},textarea:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"hybrid",a=String(null!=n?n:""),l=((a.match(/(?:\r\n|\r|\n)/g)||[]).length,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(){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 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&&M(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(){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&&M(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(){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},select:function(e,t,i,s,o){return console.warn("The select editor has been deprecated, please use the new list editor"),new L(this,e,t,i,s,o).input},list:function(e,t,i,s,o){return new L(this,e,t,i,s,o).input},autocomplete:function(e,t,i,s,o){return console.warn("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"),o.autocomplete=!0,new L(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 t=d&&t?o.trueValue:c&&!t?o.falseValue:t,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&&t((function(){r.focus({preventScroll:!0})})),r.checked=d?n===o.trueValue:!0===n||"true"===n||"True"===n||1===n,t((function(){r.focus()})),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 D extends o{constructor(e){super(e),this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[],this.editors=D.editors,this.registerColumnOption("editable"),this.registerColumnOption("editor"),this.registerColumnOption("editorParams"),this.registerColumnOption("cellEditing"),this.registerColumnOption("cellEdited"),this.registerColumnOption("cellEditCancelled"),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("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("column-delete",this.columnDeleteCheck.bind(this)),this.subscribe("row-deleting",this.rowDeleteCheck.bind(this)),this.subscribe("data-refreshing",this.cancelEdit.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-left",this.navigateLeft.bind(this,void 0)),this.subscribe("keybinding-nav-right",this.navigateRight.bind(this,void 0)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this,void 0)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this,void 0))}keybindingNavigateNext(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(t,e)||i&&(t.getElement().firstChild.blur(),(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 ")}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.findNextEditableCell(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],n=!0;if(i.column.modules.edit&&t.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){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()}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-row-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);i.setAttribute("tabindex",0),i.addEventListener("click",(function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})})),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),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.offsetTop;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();r.offsetLeft;this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin),n-=parseInt(this.table.modules.frozenColumns.rightMargin)),"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)}}edit(e,t,i){var s,o,n,r=this,a=!0,l=function(){},h=e.getElement();if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(t&&t.stopPropagation(),typeof e.column.modules.edit.check){case"function":a=e.column.modules.edit.check(e.getComponent());break;case"boolean":a=e.column.modules.edit.check}if(a||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,!1===(s=e.column.modules.edit.editor.call(r,o,(function(e){l=e}),(function(t){if(r.currentCell===e){var i=r.chain("edit-success",[e,t],!0,!0);return!0===i||"highlight"===r.table.options.validationMode?(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):(r.invalidEdit=!0,r.focusCellNoEvent(e,!0),l(),!1)}}),(function(){r.currentCell===e&&r.cancelEdit()}),n)))return h.blur(),!1;if(!(s instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",s),h.blur(),!1;for(h.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(s),l();for(var d=h.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)}}D.moduleName="edit",D.editors=k;class P{constructor(e,t,i,s){this.type=e,this.columns=t,this.component=i||!1,this.indent=s||0}}class S{constructor(e,t,i,s,o){this.value=e,this.component=t||!1,this.width=i,this.height=s,this.depth=o}}class F extends o{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){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=s;var o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],n=this.bodyToExportRows(this.rowLookup(i));return o.concat(n)}genereateTable(e,t,i,s){var o=this.generateExportList(e,t,i,s);return this.genereateTableElement(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"active":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(){var e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((t=>{var i=this.processColumnGroup(t);i&&e.push(i)})),e}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){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])}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 S(i,e.column.getComponent(),e.width,e.height,e.depth))}else t.push(null)})),s.push(new P("header",t))})),s}bodyToExportRows(e){var t=[],i=[];return 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 S(e.key,e.getComponent(),t.length,1));break;case"calc":case"row":t.forEach((e=>{n.push(new S(e._column.getFieldValue(o),e,1,1))})),this.table.options.dataTree&&!1!==this.config.dataTree&&(r=e.modules.dataTree.index)}i.push(new P(e.type,n,e.getComponent(),r))})),i}genereateTableElement(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)=>{switch(e.type){case"header":i.appendChild(this.genereateHeaderElement(e,r,o));break;case"group":s.appendChild(this.genereateGroupElement(e,r,o));break;case"calc":s.appendChild(this.genereateCalcElement(e,r,o));break;case"row":let n=this.genereateRowElement(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}genereateHeaderElement(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}genereateGroupElement(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=n.value: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}genereateCalcElement(e,t,i){var s=this.genereateRowElement(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}genereateRowElement(e,t,s){var o=document.createElement("tr");return o.classList.add("tabulator-print-table-row"),e.columns.forEach((n=>{if(n){var r=document.createElement("td"),a=n.component._column,l=this.table.columnManager.findColumnIndex(a),h=n.value,d={modules:{},getValue:function(){return h},getField:function(){return a.definition.field},getElement:function(){return r},getColumn:function(){return a.getComponent()},getData:function(){return e.component.getData()},getRow:function(){return e.component},getComponent:function(){return d},column:a};if((a.definition.cssClass?a.definition.cssClass.split(" "):[]).forEach((function(e){r.classList.add(e)})),this.table.modExists("format")&&!1!==this.config.formatCells)h=this.table.modules.format.formatExportValue(d,this.colVisProp);else switch(typeof h){case"object":h=JSON.stringify(h);break;case"undefined":case"null":h="";break;default:h=h}h instanceof Node?r.appendChild(h):r.innerHTML=h,(s.styleCells[l]||s.firstCell)&&(this.mapElementStyles(s.styleCells[l]||s.firstCell,r,["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"]),a.definition.align&&(r.style.textAlign=a.definition.align)),this.table.options.dataTree&&!1!==this.config.dataTree&&(t.treeElementField&&t.treeElementField==a.field||!t.treeElementField&&0==i)&&(e.component._row.modules.dataTree.controlEl&&r.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),r.firstChild),e.component._row.modules.dataTree.branchEl&&r.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),r.firstChild)),o.appendChild(r),d.modules.format&&d.modules.format.renderedCallback&&d.modules.format.renderedCallback(),t.rowFormatter&&!1!==this.config.formatCells&&t.rowFormatter(e.component)}})),o}genereateHTMLTable(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML}getHtml(e,t,i,s){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,s||"htmlOutput");return this.genereateHTMLTable(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]]=o.getPropertyValue(e)}))}}}}F.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 o{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.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)),"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}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){var t=e.definition;t.headerFilter&&(void 0!==t.headerFilterPlaceholder&&t.field&&this.module("localize").setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),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)switch(n){case"partial":o=function(i){var s=e.getFieldValue(i);return null!=s&&String(s).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";break;default:o=function(i){return e.getFieldValue(i)==t},r="="}i.headerFilters[s]={value:t,func:o,type:r,params:{}}}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=this,c=e.modules.filter.success,u=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),u){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e&&0!==e},(s=document.createElement("div")).classList.add("tabulator-header-filter"),typeof e.definition.headerFilter){case"string":d.table.modules.edit.editors[e.definition.headerFilter]?(o=d.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&&d.table.modules.edit.editors[e.definition.formatter]?(o=d.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=d.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()},getRow:function(){return{normalizeHeight:function(){}}}},h="function"==typeof(h=e.definition.headerFilterParams||{})?h.call(d.table,r):h,!(n=o.call(this.table.modules.edit,r,(function(){}),c,(function(){}),h)))return void console.warn("Filter Error - Cannot add filter to "+u+" column, editor returned a value of false");if(!(n instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+u+" column, editor should return an instance of Node, the editor returned:",n);u?d.langBind("headerFilters|columns|"+e.definition.field,(function(e){n.setAttribute("placeholder",void 0!==e&&e?e:d.langText("headerFilters|default"))})):d.langBind("headerFilters|default",(function(e){n.setAttribute("placeholder",e)})),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("focus",(e=>{var t=this.table.columnManager.element.scrollLeft;t!==this.table.rowManager.element.scrollLeft+parseInt(this.table.columnManager.element.style.marginLeft)&&(this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))})),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout((function(){c(n.value)}),d.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){c(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||d.headerFilterColumns.push(e)}}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():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 _={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=parseFloat(e.getValue()),l="",h=t.decimal||".",d=t.thousand||",",c=t.negativeSign||"-",u=t.symbol||"",m=!!t.symbolAfter,p=void 0!==t.precision?t.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));if(a<0&&(a=Math.abs(a),l=c),s=!1!==p?a.toFixed(p):a,o=(s=String(s).split("."))[0],n=s.length>1?h+s[1]:"",!1!==t.thousand)for(r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+d+"$2");return m?l+o+n+u:l+u+o+n},link:function(e,t,i){var s,o=e.getValue(),n=t.urlPrefix||"",r=t.download,a=o,l=document.createElement("a");if(t.labelField&&(s=e.getData(),a=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":a=t.label;break;case"function":a=t.label(e)}if(a){if(t.urlField&&(o=(s=e.getData())[t.urlField]),t.url)switch(typeof t.url){case"string":o=t.url;break;case"function":o=t.url(e)}return l.setAttribute("href",n+o),t.target&&l.setAttribute("target",t.target),t.download&&(r="function"==typeof r?r(e):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(a)),l}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&&t.max?t.max:100,c=t&&t.min?t.min:0,u=t&&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)){var m=100/t.color.length,g=Math.floor(o/m);g=Math.min(g,t.color.length-1),g=Math.max(g,0),n=t.color[g];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)){m=100/t.legendColor.length,g=Math.floor(o/m);g=Math.min(g,t.legendColor.length-1),g=Math.max(g,0),a=t.legendColor[g]}break;default:a="#000"}h.style.minWidth="30px",h.style.position="relative",h.setAttribute("aria-label",o);var b=document.createElement("div");b.style.display="inline-block",b.style.position="absolute",b.style.width=o+"%",b.style.backgroundColor=n,b.style.height="100%",b.setAttribute("data-max",d),b.setAttribute("data-min",c);var f=document.createElement("div");if(f.style.position="relative",f.style.width="100%",f.style.height="100%",r){var v=document.createElement("div");v.style.position="absolute",v.style.top=0,v.style.left=0,v.style.textAlign=u,v.style.width="100%",v.style.color=a,v.innerHTML=r}return i((function(){if(!(e instanceof p)){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(f),f.appendChild(b),r&&f.appendChild(v)})),""},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){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1||""},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="+-",e.getElement().classList.add("tabulator-row-handle"),s.addEventListener("click",(function(e){e.stopImmediatePropagation(),n(!o.open)})),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 w?(s.addEventListener("change",(e=>{"click"===this.table.options.selectableRangeMode&&o?o=!1:n.toggleSelect()})),"click"===this.table.options.selectableRangeMode&&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 O extends o{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":O.formatters[s]?i.formatter=O.formatters[s]:(console.warn("Formatter Error - No such formatter found: ",s),i.formatter=O.formatters.plaintext);break;case"function":i.formatter=s;break;default:i.formatter=O.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}},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){return i="function"==typeof s.params?s.params(component):s.params,s.formatter.call(this,e.getComponent(),i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}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":O.formatters[e]?e=O.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=O.formatters.plaintext);break;case"function":e=e;break;default:e=O.formatters.plaintext}return e}}O.moduleName="format",O.formatters=_;class A extends o{constructor(e){super(e),this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1,this.blocked=!0,this.registerColumnOption("frozen")}reset(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0}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("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("columns-loading",this.reset.bind(this)),this.subscribe("column-add",this.reinitializeColumns.bind(this)),this.subscribe("column-delete",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))}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)}))}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}scrollHorizontal(){var e;this.active&&(clearTimeout(this.scrollEndTimer),e=this.table.rowManager.getVisibleRows(),this.calcMargins(!0),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach((e=>{"row"===e.type&&this.layoutRow(e)})))}calcMargins(e){e||(this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.rowManager.tableElement.style.marginRight=this.rightMargin),this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft}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&&e.groupList)}))}layoutColumnPosition(e){var t=[],i=0,s=0;this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.table.columnManager.element.style.paddingRight=this.rightMargin,this.leftColumns.forEach(((s,o)=>{if(s.modules.frozen.margin=i+this.table.columnManager.scrollLeft+"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)),s.modules.frozen.edge&&n.classList.add("tabulator-frozen-"+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.visible&&(s+=t.getWidth()),t.modules.frozen.margin=this.rightPadding-s+"px",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(){var e=[];this.active&&!this.blocked&&(this.calcMargins(),this.layoutColumnPosition(),e=this.table.rowManager.getVisibleRows(),this.table.rowManager.getDisplayRows().filter((t=>!e.includes(t))).forEach((e=>{e.deinitialize()})),e.forEach((e=>{"row"===e.type&&this.layoutRow(e)})),this.layoutCalcRows())}layoutRow(e){e.getElement().style.paddingLeft=this.leftMargin,"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){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))}_calcSpace(e,t){var i=0;for(let s=0;s-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.table.rowManager.adjustTableSize(),this.rows.push(e),this.refreshData(!1,"display"),this.styleRows())}unfreezeRow(e){this.rows.indexOf(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)}))}}B.moduleName="frozenRows";class I{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("row",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()}_getSelf(){return this._group}getTable(){return this._group.groupManager.table}}class N{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=>{e.stopPropagation(),e.stopImmediatePropagation(),this.toggleVisibility()}))}_createGroup(e,t){var i=t+"_"+e,s=new N(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.generateGroupHeaderContents(),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.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(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach((function(i){t=t.concat(i.getHeadersAndRows(e))})):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t}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,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(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.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}show(){if(this.visible=!0,"classic"!=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.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}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){var t=[];return this.rows.forEach((function(i){t.push(e?i.getComponent():i)})),t}generateGroupHeaderContents(){var e=[];for(this.rows.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=[],Array.isArray(e)||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])}}rowSample(e,t){var i=this.getGroups(!1)[0];return t.push(i.getRows(!1)[0]),t}virtualRenderFill(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();t=t.filter((e=>"group"!==e.type)),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}rowAddingIndex(e,t,i){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.configureGroupSetup():this.initialize(),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){!i&&t instanceof N&&(t=this.table.rowManager.prevDisplayRow(e)||t);var s=t instanceof N?t:t.modules.group,o=e instanceof N?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){e.modules.group&&e.modules.group.removeRow(e)}rowsUpdated(e){this.updateGroupRows(!0)}cellUpdated(e){this.reassignRowToGroup(e.row)}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}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.groupList.forEach((function(e){e.wipe()}))}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.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)}))}createGroup(e,t,i){var s,o=t+"_"+e;i=i||[],s=new N(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.groupList.forEach((e=>{t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0,this.displayHandler),t}scrollHeaders(e){"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))}}V.moduleName="groupRows";class W extends o{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:this.table.rowManager.getRowPosition(e),posTo:this.table.rowManager.getRowPosition(t),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().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 W.undoers[e.type].call(this,e),this.index--,this.dispatchExternal("historyUndo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1}redo(){if(this.history.length-1>this.index){this.index++;let e=this.history[this.index];return W.redoers[e.type].call(this,e),this.dispatchExternal("historyRedo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1}_rebindRow(e,t){this.history.forEach((function(i){if(i.component instanceof C)i.component===e&&(i.component=t);else if(i.component instanceof g&&i.component.row===e){var s=i.component.column.getField();s&&(i.component=t.getCell(s))}}))}}W.moduleName="history",W.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue),e.component.cellRendered()},rowAdd:function(e){e.component.deleteActual()},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)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},W.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)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}};class G extends o{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=(t.columns,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?U.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;case"text":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)}}U.moduleName="import",U.importers=j;class X extends o{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",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",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",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",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("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("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))}cellContentsSelectionFixer(e,t){if(!this.table.modExists("edit")||this.table.modules.edit.currentCell!==this){e.preventDefault();try{if(document.selection)(i=document.body.createTextRange()).moveToElementText(this.element),i.select();else if(window.getSelection){var i;(i=document.createRange()).selectNode(this.element),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 g?s=i.column.definition[e]:i instanceof v&&(s=i.definition[e]),s&&s(t,o)),this.dispatchExternal(e,t,o)}}X.moduleName="interaction";class q extends o{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,q.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)q.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:q.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)}}q.moduleName="keybindings",q.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:["ctrl + 90","meta + 90"],redo:["ctrl + 89","meta + 89"],copyToClipboard:["ctrl + 67","meta + 89"]},q.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;t.element.scrollHeight;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)},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 K extends o{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("groupContextMenu",!1),this.registerTableOption("groupClickMenu",!1),this.registerColumnOption("headerContextMenu"),this.registerColumnOption("headerClickMenu"),this.registerColumnOption("headerMenu"),this.registerColumnOption("headerMenuIcon"),this.registerColumnOption("contextMenu"),this.registerColumnOption("clickMenu")}initialize(){this.deprecationCheck(),this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}deprecationCheck(){void 0!==this.table.options.menuContainer&&(console.warn("Use of the menuContainer option is now deprecated. Please use the popupContainer option instead"),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))}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))}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.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))}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.hide()})),n.show(s||e),n===this.rootPopup&&(this.rootPopup.hideOnBlur((()=>{this.rootPopup=null,this.currentComponent&&(this.dispatchExternal("menuClosed",this.currentComponent.getComponent()),this.currentComponent=null)})),this.currentComponent=t,this.dispatchExternal("menuOpened",t.getComponent()))}}}K.moduleName="menu";class J extends o{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))}initializeColumn(e){var i,s=this,o={};e.modules.frozen||(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.element.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.getElement(),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"),this.table.columnManager.getElement().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.getElement(),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)))}}J.moduleName="moveColumn";class Y extends o{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(e){i.tableRowDrop(e,row)}.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=s-this.startY+"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.getComponent(),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)}}}Y.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)}},Y.prototype.senders={delete:function(e,t,i){e.delete()}},Y.moduleName="moveRow";class $ extends o{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":$.mutators[e]?t=$.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&&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}}$.moduleName="mutator",$.mutators={};var Z={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 Q extends o{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.displayIndex=0,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:Q.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||e||(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")}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}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)}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.table.rowManager.getDisplayRows(this.displayIndex-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":case"null":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"))}}Q.moduleName="page",Q.pageCounters=Z;var ee={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 ie extends o{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:ie.readers[this.table.options.persistenceReaderFunc]?this.readFunc=ie.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):ie.readers[this.mode]?this.readFunc=ie.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:ie.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=ie.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):ie.writers[this.mode]?this.writeFunc=ie.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,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.retreiveData("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.retreiveData("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("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("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;this.table.options;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)}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}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:function(e){s=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),s}})})),this.defWatcherBlock=!1)}load(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}retreiveData(e){return!!this.readFunc&&this.readFunc(this.id,e)}mergeDefinition(e,t){var i=[];return(t=t||[]).forEach(((t,s)=>{var o,n=this._findColumn(e,t);n&&(!0===this.config.columns||null==this.config.columns?(o=Object.keys(n)).push("width"):o=this.config.columns,o.forEach((e=>{"columns"!==e&&void 0!==t[e]&&(n[e]=t[e])})),n.columns&&(n.columns=this.mergeDefinition(n.columns,t.columns)),i.push(n))})),e.forEach(((e,s)=>{this._findColumn(t,e)||(i.length>s?i.splice(s,0,e):i.push(e))})),i}_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"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=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}}ie.moduleName="persistence",ie.moduleInitOrder=-10,ie.readers=ee,ie.writers=te;class se extends o{constructor(e){super(e),this.columnSubscribers={},this.registerTableOption("rowContextPopup",!1),this.registerTableOption("rowClickPopup",!1),this.registerTableOption("groupContextPopup",!1),this.registerTableOption("groupClickPopup",!1),this.registerColumnOption("headerContextPopup"),this.registerColumnOption("headerClickPopup"),this.registerColumnOption("headerPopup"),this.registerColumnOption("headerPopupIcon"),this.registerColumnOption("contextPopup"),this.registerColumnOption("clickPopup")}initialize(){this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}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))}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))}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.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))}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){var s;i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,t,i.getComponent(),(function(e){s=e})):e,this.loadPopup(t,i,e,s)}loadPopup(e,t,i,s){var o,n,r=!(e instanceof MouseEvent);i instanceof HTMLElement?o=i:(o=document.createElement("div")).innerHTML=i,o.classList.add("tabulator-popup"),o.addEventListener("click",(e=>{e.stopPropagation()})),r||e.preventDefault(),n=this.popup(o),"function"==typeof s&&n.renderCallback(s),n.show(e).hideOnBlur((()=>{this.dispatchExternal("popupClosed",t.getComponent())})),this.dispatchExternal("popupOpened",t.getComponent())}}se.moduleName="popup";class oe extends o{constructor(e){super(e),this.element=!1,this.manualBlock=!1,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&&(window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}replaceTable(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(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.genereateTable(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}}oe.moduleName="print";class ne extends o{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)),this.subscribe("cell-value-save-after",this.unblock.bind(this)),this.subscribe("row-data-save-before",this.block.bind(this)),this.subscribe("row-data-save-after",this.unblock.bind(this)),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=Array.from(arguments);return i.blocked||t!==i.currentVersion||s.forEach((e=>{i.table.rowManager.addRowActual(e,!1)})),i.origFuncs.push.apply(e,arguments)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var s=Array.from(arguments);return i.blocked||t!==i.currentVersion||s.forEach((e=>{i.table.rowManager.addRowActual(e,!0)})),i.origFuncs.unshift.apply(e,arguments)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var s;return i.blocked||t!==i.currentVersion||i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[0]))&&s.deleteActual(),i.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var s;return i.blocked||t!==i.currentVersion||i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&s.deleteActual(),i.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments),n=o[0]<0?e.length+o[0]:o[0],r=o[1],a=!!o[2]&&o.slice(2);if(!i.blocked&&t===i.currentVersion){if(a&&((s=!!e[n]&&i.table.rowManager.getRowFromDataObject(e[n]))?a.forEach((e=>{i.table.rowManager.addRowActual(e,!0,s,!0)})):(a=a.slice().reverse()).forEach((e=>{i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(n,void 0===o[1]?o[1]:n+r);l.forEach(((e,t)=>{var s=i.table.rowManager.getRowFromDataObject(e);s&&s.deleteActual(t!==l.length-1)}))}(a||0!==r)&&i.table.rowManager.reRenderInPosition()}return i.origFuncs.splice.apply(e,arguments)}})}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 this.blocked=!0,t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e),this.blocked=!1}watchTreeChildren(e){var t=e.getData()[this.table.options.dataTreeChildField],i={};function s(){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}t&&(i.push=t.push,Object.defineProperty(t,"push",{enumerable:!1,configurable:!0,value:()=>{var e=i.push.apply(t,arguments);return s(),e}}),i.unshift=t.unshift,Object.defineProperty(t,"unshift",{enumerable:!1,configurable:!0,value:()=>{var e=i.unshift.apply(t,arguments);return s(),e}}),i.shift=t.shift,Object.defineProperty(t,"shift",{enumerable:!1,configurable:!0,value:()=>{var e=i.shift.call(t);return s(),e}}),i.pop=t.pop,Object.defineProperty(t,"pop",{enumerable:!1,configurable:!0,value:()=>{var e=i.pop.call(t);return s(),e}}),i.splice=t.splice,Object.defineProperty(t,"splice",{enumerable:!1,configurable:!0,value:()=>{var e=i.splice.apply(t,arguments);return s(),e}}))}watchKey(e,t,i){var s=Object.getOwnPropertyDescriptor(t,i),o=t[i],n=this.currentVersion;Object.defineProperty(t,i,{set:t=>{if(o=t,!this.blocked&&n===this.currentVersion){var r={};r[i]=t,e.updateData(r)}s.set&&s.set(t)},get:()=>(s.get&&s.get(),o)})}unwatchRow(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}block(){this.blocked=!0}unblock(){this.blocked=!1}}ne.moduleName="reactiveData";class re extends o{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-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)}reinitializeColumn(e){e.cells.forEach((e=>{e.modules.resize&&e.modules.resize.handleEl&&e.element.after(e.modules.resize.handleEl)})),e.modules.resize&&e.modules.resize.handleEl&&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()))})),r.handleEl=l,s.parentNode&&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.renderer.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.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)}}re.moduleName="resizeColumns";class ae extends o{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)}}ae.moduleName="resizeRows";class le extends o{constructor(e){super(e),this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!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 ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&!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.table.columnManager.renderer.rerenderColumns(!0),t.redraw())}})),this.observer.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.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),t.columnManager.renderer.rerenderColumns(!0),t.redraw()}})),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.currentCell)&&(t.columnManager.renderer.rerenderColumns(!0),t.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}tableResized(){this.table.rowManager.redraw()}clearBindings(){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}le.moduleName="resizeTable";class he extends o{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-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=this,t=!0;t;){let i="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),s=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-i;if(s<0){let i=e.columns[e.index];i?(e.hideColumn(i),e.index++):t=!1}else{let i=e.columns[e.index-1];i&&s>0&&s>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}}generateCollapsedContent(){var e=this;this.table.rowManager.getDisplayRows().forEach((function(t){e.generateCollapsedRowContent(t)}))}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=this,s=e.getData(),o=[];return this.hiddenColumns.forEach((function(n){var r=n.getFieldValue(s);if(n.definition.title&&n.field)if(n.modules.format&&i.table.options.responsiveLayoutCollapseUseFormatters){t={value:!1,data:{},getValue:function(){return r},getData:function(){return s},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return n.getComponent()}},o.push({field:n.field,title:n.definition.title,value:n.modules.format.formatter.call(i.table.modules.format,t,n.modules.format.params,(function(e){e()}))})}else o.push({field:n.field,title:n.definition.title,value:r})})),o}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 de extends o{constructor(e){super(e),this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null,this.registerTableOption("selectable","highlight"),this.registerTableOption("selectableRangeMode","drag"),this.registerTableOption("selectableRollingSelection",!0),this.registerTableOption("selectablePersistence",!0),this.registerTableOption("selectableCheck",(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(){!1!==this.table.options.selectable&&(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.selectable&&!this.table.options.selectablePersistence&&this.subscribe("data-refreshing",this.deselectRows.bind(this)))}rowRetrieve(e,t){return"selected"===e?this.selectedRows:t}rowDeleted(e){this._deselectRow(e,!0)}clearSelectionData(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],!0!==e&&this._rowSelectionChanged()}initializeRow(e){var t=this,i=e.getElement(),s=function(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",s)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(i.classList.add("tabulator-selectable"),i.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?i.addEventListener("click",this.handleComplexRowClick.bind(this,e)):(i.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),i.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",s),document.body.addEventListener("keyup",s),t.toggleRow(e),!1})),i.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),i.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))):(i.classList.add("tabulator-unselectable"),i.classList.remove("tabulator-selectable"))}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.selectable||this.isRowSelected(e)||this.selectedRows.lengththis.table.options.selectable&&(r=r.slice(0,this.table.options.selectable)),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)}toggleRow(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}selectRows(e){var t;switch(typeof e){case"undefined":this.table.rowManager.rows.forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;case"string":(t=this.table.rowManager.findRow(e))?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}}_selectRow(e,t,i){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!i&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var s=this.table.rowManager.findRow(e);s?-1==this.selectedRows.indexOf(s)&&(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)):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=this;if(void 0===e){i=s.selectedRows.length;for(let e=0;e-1&&(o.getElement().classList.remove("tabulator-selected"),o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.modules.select.checkboxEl&&(o.modules.select.checkboxEl.checked=!1),s.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(o,!1),this.dispatchExternal("rowDeselected",o.getComponent()),s._rowSelectionChanged(t)):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){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||this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows())}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 ce(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(e=a.isDateTime(e)?e:"iso"===l?a.fromISO(String(e)):a.fromFormat(String(e),l),t=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")}de.moduleName="selectRow";var ue={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"),ce.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"),ce.call(this,e,t,i,s,o,n,r)},datetime:ce,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){switch(a){case"length":return e.length;case"sum":return e.reduce((function(e,t){return e+t}));case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce((function(e,t){return e+t}))/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?d(e):0)-(t?d(t):0);l=1}else l=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 me extends o{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.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":me.sorters[e.definition.sorter]?s=me.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort&&((t=e.getElement()).classList.add("tabulator-sortable"),(i=document.createElement("div")).classList.add("tabulator-col-sorter"),"object"==typeof this.table.options.headerSortElement?i.appendChild(this.table.options.headerSortElement):i.innerHTML=this.table.options.headerSortElement,e.titleHolderElement.appendChild(i),e.modules.sort.element=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())))>-1?(s[o].dir=i,o!=s.length-1&&(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():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 me.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.modules.sort;e.column&&o&&(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((function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))}))}setColumnHeader(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)}_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)}}me.moduleName="sort",me.sorters=ue;class pe extends o{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.deprecationCheck(),this.subscribe("column-init",this.initializeColumn.bind(this))}deprecationCheck(){void 0!==this.table.options.tooltipGenerationMode&&console.warn("Use of the tooltipGenerationMode option is now deprecated. 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 g?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||"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()))}}pe.moduleName="tooltip";var ge={integer:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(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)},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("|")),""===t||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 be extends o{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=>{this.cellValidate(e)||t.push(e.getComponent())})),!t.length||t}rowValidate(e){var t=[];return e.cells.forEach((e=>{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:be.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))}}be.moduleName="validate",be.validators=ge;var fe=Object.freeze({__proto__:null,AccessorModule:n,AjaxModule:c,ClipboardModule:u,ColumnCalcsModule:y,DataTreeModule:R,DownloadModule:T,EditModule:D,ExportModule:F,FilterModule:H,FormatModule:O,FrozenColumnsModule:A,FrozenRowsModule:B,GroupRowsModule:V,HistoryModule:W,HtmlTableImportModule:G,ImportModule:U,InteractionModule:X,KeybindingsModule:q,MenuModule:K,MoveColumnsModule:J,MoveRowsModule:Y,MutatorModule:$,PageModule:Q,PersistenceModule:ie,PopupModule:se,PrintModule:oe,ReactiveDataModule:ne,ResizeColumnsModule:re,ResizeRowsModule:ae,ResizeTableModule:le,ResponsiveLayoutModule:he,SelectRowModule:de,SortModule:me,TooltipModule:pe,ValidateModule:be});class ve{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);if(Object.assign(i,e),!1!==t.debugInvalidOptions||this.table.options.debugInvalidOptions)for(var s in t)i.hasOwnProperty(s)||console.warn("Invalid "+this.msgType+" option:",s);for(var s in i)s in t?i[s]=t[s]:Array.isArray(i[s])?i[s]=Object.assign([],i[s]):"object"==typeof i[s]&&null!==i[s]?i[s]=Object.assign({},i[s]):void 0===i[s]&&delete i[s];return i}}class we 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{e.element.appendChild(t.getElement()),t.cellRendered()}))}reinitializeColumnWidths(e){e.forEach((function(e){e.reinitializeWidth()}))}}class Ee extends we{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(){var e=this.options("columns"),t=!0;return"fitDataTable"==this.options("layout")&&(console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"),t=!1),this.options("responsiveLayout")&&(console.warn("Horizontal Virtual DOM is not compatible with responsive columns"),t=!1),this.options("rtl")&&(console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction"),t=!1),e&&e.find((e=>e.frozen))&&(console.warn("Horizontal Virtual DOM is not compatible with frozen columns"),t=!1),t}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={};if(e.visible){var i=e.getWidth();t.leftPos=s,t.rightPos=s+i,t.width=i,this.isFitData&&(t.fitDataCheck=!e.modules.vdomHoz||e.modules.vdomHoz.fitDataCheck),s+i>this.vDomScrollPosLeft&&s{e.element.appendChild(t.getElement()),t.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,s=0;if(this.isFitData){if(this.table.columnManager.columnsByIndex.forEach((e=>{!e.definition.width&&e.visible&&(i=!0)})),i&&i&&this.table.rowManager.getDisplayRows().length&&(this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.windowBuffer,t=this.chain("rows-sample",[1],[],(()=>this.table.rowManager.getDisplayRows()))[0])){e=t.getElement(),t.generateCells(),this.tableElement.appendChild(e);for(s=0;s{e!==this.columns[i]&&(t=!1)})),!t)}reinitializeRows(){this.getVisibleRows().forEach((e=>{this.reinitializeRow(e,!0)}))}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 i=e.getCell(t);e.getElement().appendChild(i.getElement()),i.cellRendered()}})),this.fitDataColActualWidthCheck(t),this.rightCol++,this.rightCol>=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=t.getWidth()}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}addColLeft(){for(var e=!1;;){let t=this.columns[this.leftCol-1];if(!t)break;if(!(t.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft))break;{e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var i=e.getCell(t);e.getElement().prepend(i.getElement()),i.cellRendered()}})),this.leftCol--,this.leftCol<=0?this.vDomPadLeft=0:this.vDomPadLeft-=t.getWidth();let i=this.fitDataColActualWidthCheck(t);i&&(this.scrollLeft=this.elementVertical.scrollLeft=this.elementVertical.scrollLeft+i,this.vDomPadRight-=i)}}e&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}removeColRight(){for(var e=!1;;){let t=this.columns[this.rightCol];if(!t)break;if(!(t.modules.vdomHoz.leftPos>this.vDomScrollPosRight))break;e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var i=e.getCell(t);try{e.getElement().removeChild(i.getElement())}catch(e){console.warn("Could not removeColRight",e.message)}}})),this.vDomPadRight+=t.getWidth(),this.rightCol--}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}removeColLeft(){for(var e=!1;;){let t=this.columns[this.leftCol];if(!t)break;if(!(t.modules.vdomHoz.rightPos{if("group"!==e.type){var i=e.getCell(t);try{e.getElement().removeChild(i.getElement())}catch(e){console.warn("Could not removeColLeft",e.message)}}})),this.vDomPadLeft+=t.getWidth(),this.leftCol++}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};for(let t=this.leftCol;t<=this.rightCol;t++){let i=this.columns[t];if(i&&i.visible){let t=e.getCell(i);e.getElement().appendChild(t.getElement()),t.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 ye extends e{constructor(e){super(e),this.blockHozScrollEvent=!1,this.headersElement=null,this.element=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.optionsList=new ve(this.table,"column definition",f),this.renderer=null}initialize(){this.initializeRenderer(),this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.element.insertBefore(this.headersElement,this.element.firstChild),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this))}initializeRenderer(){var e,t={virtual:Ee,basic:Ce};(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:",table.options.renderHorizontal)}createHeadersElement(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e.setAttribute("role","row"),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}getHeadersElement(){return this.headersElement}scrollHorizontal(e){var t=0,i=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>i?(t=e-i,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.renderer.scrollColumns(e)}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.renderer.rerenderColumns(!1,!0),this.redraw(!0)}_addColumn(e,t,i){var s=new v(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.columns.forEach((t=>{var i;t.clearVerticalAlign(),(i=t.getHeight())>e&&(e=i)})),this.columns.forEach((t=>{t.verticalAlign(this.table.options.columnHeaderVertAlign,e)})),this.table.rowManager.adjustTableSize()}findColumn(e){if("object"!=typeof e)return this.columnsByField[e]||!1;if(e instanceof v)return e;if(e instanceof b)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return this.columns.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=>{i.split(".")[0]===e&&t.push(this.columnsByField[i])})),t}getColumnByIndex(e){return this.columnsByIndex[e]}getFirstVisibleColumn(e){return(e=this.columnsByIndex.findIndex((e=>e.visible)))>-1&&this.columnsByIndex[e]}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){this.moveColumnActual(e,t,i),t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),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.renderer.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=0,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=r.offsetLeft)>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.renderer.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()}redraw(e){t.elVisible(this.element)&&this.verticalAlignHeaders(),e&&(this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}class Re extends we{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;this.rows().forEach(((i,s)=>{this.styleRow(i,s),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(t=!1)})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}rerenderRows(e){this.clearRows(),this.renderRows(),e&&e()}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 xe extends we{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._virtualRenderFill(!1===i?this.rows.length-1:i,!0,s||0),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=this.tableElement,n=this.elementVertical,r=0,a=0,l=0,h=0,d=0,c=this.rows(),u=c.length,m=this.elementVertical.clientHeight;if(s=s||0,e=e||0){for(;o.firstChild;)o.removeChild(o.firstChild);(l=(u-e+1)*this.vDomRowHeight)this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*p),this.vDomBottom++,d++}e?(this.vDomTopPad=i?this.vDomRowHeight*this.vDomTop+s:this.scrollTop-h,this.vDomBottomPad=this.vDomBottom==u-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-a-h,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((a+h)/d),this.vDomBottomPad=this.vDomRowHeight*(u-this.vDomBottom-1),this.vDomScrollHeight=h+a+this.vDomBottomPad-m),o.style.paddingTop=this.vDomTopPad+"px",o.style.paddingBottom=this.vDomBottomPad+"px",i&&(this.scrollTop=this.vDomTopPad+h+s-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-m:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-m),this.elementVertical.scrollWidth>this.elementVertical.offsetWidth&&i&&(this.scrollTop+=this.elementVertical.offsetHeight-m),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,n.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;this.vDomTop;){let a,l,h=e[n];if(!(h&&r=a))break;this.styleRow(h,n),i.insertBefore(h.getElement(),i.firstChild),h.initialized&&h.heightInitialized||s.push(h),h.initialize(),l||(a=h.getElement().offsetHeight,a>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*a)),t-=a,o+=a,this.vDomTop--,n--,r++}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;;){let n,r=e[this.vDomTop];if(!(r&&o=n))break;this.vDomTop++,t-=n,s+=n,i.push(r),o++}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;;){let a,l,h=e[n];if(!(h&&r=a))break;this.styleRow(h,n),i.appendChild(h.getElement()),h.initialized&&h.heightInitialized||s.push(h),h.initialize(),l||(a=h.getElement().offsetHeight,a>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*a)),t-=a,o+=a,this.vDomBottom++,n++,r++}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;;){let n,r=e[this.vDomBottom];if(!(r&&o=n))break;this.vDomBottom--,t-=n,s+=n,i.push(r),o++}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 Te 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.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRenderInPosition=!1,this.dataPipeline=[],this.displayPipeline=[],this.renderer=null}createHolderElement(){var e=document.createElement("div");return e.classList.add("tabulator-tableholder"),e.setAttribute("tabindex",0),e.setAttribute("role","rowgroup"),e}createTableElement(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e.setAttribute("role","rowgroup"),e}initializePlaceholder(){if("string"==typeof this.table.options.placeholder){let e=document.createElement("div");e.classList.add("tabulator-placeholder");let t=document.createElement("div");t.classList.add("tabulator-placeholder-contents"),t.innerHTML=this.table.options.placeholder,e.appendChild(t),this.placeholderContents=t,this.placeholder=e}}getElement(){return this.element}getTableElement(){return this.tableElement}getRowPosition(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)}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(null==e)return!1;return this.rows.find((t=>t.data[this.table.options.index]==e))||!1}if(e instanceof C)return e;if(e instanceof w)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,t){return t?this.activeRows[e]:this.rows[e]}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 C(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.rows.forEach((e=>{e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.adjustTableSize()}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.regenerateRowNumbers(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this._showPlaceholder(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}addRow(e,t,i,s){return this.addRowActual(e,t,i,s)}addRows(e,t,i){var s=[];return new Promise(((o,n)=>{t=this.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length,(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach(((o,n)=>{var r=this.addRow(o,t,i,!0);s.push(r),this.dispatch("row-added",r,e,t,i)})),this.refreshActiveData(!1,!1,!0),this.regenerateRowNumbers(),s.length&&this._clearPlaceholder(),o(s)}))}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 C?e:new C(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.regenerateRowNumbers(),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("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;this.redrawBlock?(!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===n&&r{var t=e.getCell(this.rowNumColumn);t&&t._generateContents()}))}setActiveRows(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length}resetDisplayRows(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length}getNextDisplayIndex(){return this.displayRows.length}setDisplayRows(e,t){var i=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,i=!0):(this.displayRows.push(e),i=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),i}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.renderer.rerenderRows(e)}initializeRenderer(){var e,t={virtual:xe,basic:Re};(e="string"==typeof this.table.options.renderVertical?t[this.table.options.renderVertical]: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.fixedHeight=!0:this.fixedHeight=!1):console.error("Unable to find matching renderer:",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.layoutRefresh())):this.renderEmptyScroll(),this.fixedHeight||this.adjustTableSize(),this.dispatch("table-layout"),this.displayRowsCount||this._showPlaceholder(),this.dispatchExternal("renderComplete")}renderEmptyScroll(){this.placeholder?this.tableElement.style.display="none":this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px"}_clearTable(){this.tableElement;this._clearPlaceholder(),this.scrollTop=0,this.scrollLeft=0,this.renderer.clearRows()}_showPlaceholder(){this.placeholder&&(this.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.placeholder),this._positionPlaceholder())}_clearPlaceholder(){this.placeholder&&this.placeholder.parentNode&&this.placeholder.parentNode.removeChild(this.placeholder)}_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(){var e=this.element.clientHeight;if("fill"===this.renderer.verticalFillMode){let t=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));this.fixedHeight?(this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-t+"px",this.element.scrollTop=this.scrollTop),this.renderer.resize(),this.fixedHeight||e==this.element.clientHeight||(this.subscribed("table-resize")?this.dispatch("table-resize"):this.redraw())}this._positionPlaceholder()}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){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():(this.reRenderInPosition(),this.scrollHorizontal(t))}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 Me 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)switch(typeof this.table.options.footerElement){case"string":"<"===this.table.options.footerElement[0]?this.containerElement.innerHTML=this.table.options.footerElement:(this.external=!0,this.containerElement=document.querySelector(this.table.options.footerElement));break;default: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 Le 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","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]]=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={};for(let e of i){let i,n=t[e],r=this.previousTargets[e];if(r&&r.target===n)i=r.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()===n)),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(n));break;case"cell":s.components.includes("cell")&&(t.row instanceof C?i=t.row.findCell(n):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&&(t[e]=i,o[e]={target:n,component:i})}return this.previousTargets=o,t}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 ke{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("_")||console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}class De extends e{constructor(e){super(e),this.requestOrder=0,this.loading=!1}initialize(){}load(e,t,i,s,o){var n=++this.requestOrder;return 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=>{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);n==this.requestOrder?(this.clearAlert(),!1!==t&&(this.dispatchExternal("dataLoaded",t),this.table.rowManager.setData(t,s,!s))):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,!s),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 Pe{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._notifiySubscriptionChange(e,!0)}subscribe(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifiySubscriptionChange(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._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_notifiySubscriptionChange(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 Se{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._notifiySubscriptionChange(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._notifiySubscriptionChange(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._notifiySubscriptionChange(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}_notifiySubscriptionChange(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{static register(e){Fe.tables.push(e)}static deregister(e){var t=Fe.tables.indexOf(e);t>-1&&Fe.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)&&(o=e),e.visible&&(t+=e.getWidth())})),o?(s=i-t+o.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(o.setWidth(0),this.table.modules.responsiveLayout.update()),s>0?o.setWidth(s):o.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,i,s=this.table.element.clientWidth,o=0,n=0,r=0,a=[],l=[],h=0,d=0;function c(e){return"string"==typeof e?e.indexOf("%")>-1?s/100*parseInt(e):parseInt(e):e}function u(e,t,i,s){var o=[],n=0,a=0,l=0,h=r,d=0,m=0,p=[];function g(e){return i*(e.column.definition.widthGrow||1)}function b(e){return c(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&&(s-=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=c(t),o+=s>i?s:i,e.definition.widthShrink&&(l.push({column:e,width:s>i?s:i}),h+=e.definition.widthShrink)):(a.push({column:e,width:0}),r+=e.definition.widthGrow||1))})),n=s-o,t=Math.floor(n/r),d=u(a,n,t,!1),a.length&&d>0&&(a[a.length-1].width+=+d),a.forEach((function(e){n-=e.width})),(i=Math.abs(d)+n)>0&&h&&(d=u(l,i,Math.floor(i/h),!0)),l.length&&(l[l.length-1].width-=d),a.forEach((function(e){e.column.setWidth(e.width)})),l.forEach((function(e){e.column.setWidth(e.width)}))}};class _e extends o{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;_e.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)}getMode(){return this.mode}layout(){this.dispatch("layout-refreshing"),_e.modes[this.mode].call(this,this.table.columnManager.columnsByIndex),this.dispatch("layout-refreshed")}}_e.moduleName="layout",_e.modes=He;class Oe extends o{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(Oe.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}setHeaderFilterColumnPlaceholder(e,t){this.langList.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)}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=(e=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)}))}}Oe.moduleName="localize",Oe.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 Ae extends o{constructor(e){super(e)}initialize(){this.registerTableFunction("tableComms",this.receive.bind(this))}getConnections(e){var t=[];return Fe.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)}}Ae.moduleName="comms";var Be=Object.freeze({__proto__:null,LayoutModule:_e,LocalizeModule:Oe,CommsModule:Ae});class Ie{constructor(e,t){this.bindStaticFuctionality(e),this.bindModules(e,Be,!0),t&&this.bindModules(e,t)}bindStaticFuctionality(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=Fe.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 Ne 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.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.element.parentNode&&this.element.parentNode.removeChild(this.element),this.msgElement.classList.remove(this._typeClass())}}class Ve{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 ke(this),this.dataLoader=!1,this.modules={},this.modulesCore=[],this.modulesRegular=[],this.optionsList=new ve(this,"table constructor"),this.initialized=!1,this.initializeElement(e)&&(this.initializeCoreSystems(t),setTimeout((()=>{this._create()}))),Fe.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 ye(this),this.rowManager=new Te(this),this.footerManager=new Me(this),this.dataLoader=new De(this),this.alertManager=new Ne(this),this.bindModules(),this.options=this.optionsList.generate(Ve.defaultOptions,e),this._clearObjectPointers(),this._mapDeprecatedFunctionality(),this.externalEvents=new Pe(this,this.options,this.options.debugEventsExternal),this.eventBus=new Se(this.options.debugEventsInternal),this.interactionMonitor=new Le(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)}destroy(){var e=this.element;for(Fe.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.rows.forEach((function(e){e.wipe()})),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[];e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")}_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):(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(){return this.initGuard(),this.rowManager.blockRedraw()}restoreRedraw(){return this.initGuard(),this.rowManager.restoreRedraw()}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.forEach((e=>{var s=this.rowManager.findRow(e[this.options.index]);s&&(t++,s.updateData(e).then((()=>{--t||i()})))})):(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.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,t){var i=this.rowManager.getRowFromPosition(e,t);return i?i.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).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,t){var i=this.rowManager.findRow(e);return i?this.rowManager.getRowPosition(i,t):(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()}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}}Ve.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,debugInitialization:!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 Ie(Ve);class We extends Ve{}new Ie(We,fe);class Ge{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(){}}export{n as AccessorModule,c as AjaxModule,m as CalcComponent,p as CellComponent,u as ClipboardModule,y as ColumnCalcsModule,b as ColumnComponent,R as DataTreeModule,T as DownloadModule,D as EditModule,F as ExportModule,H as FilterModule,O as FormatModule,A as FrozenColumnsModule,B as FrozenRowsModule,I as GroupComponent,V as GroupRowsModule,W as HistoryModule,G as HtmlTableImportModule,U as ImportModule,X as InteractionModule,q as KeybindingsModule,K as MenuModule,o as Module,J as MoveColumnsModule,Y as MoveRowsModule,$ as MutatorModule,Q as PageModule,ie as PersistenceModule,se as PopupModule,oe as PrintModule,Ge as PseudoRow,ne as ReactiveDataModule,we as Renderer,re as ResizeColumnsModule,ae as ResizeRowsModule,le as ResizeTableModule,he as ResponsiveLayoutModule,w as RowComponent,de as SelectRowModule,me as SortModule,Ve as Tabulator,We as TabulatorFull,pe as TooltipModule,be as ValidateModule}; //# sourceMappingURL=tabulator_esm.min.js.map diff --git a/dist/js/tabulator_esm.min.js.map b/dist/js/tabulator_esm.min.js.map index 31cd4bd23..e5a2d3c32 100644 --- a/dist/js/tabulator_esm.min.js.map +++ b/dist/js/tabulator_esm.min.js.map @@ -1 +1 @@ -{"version":3,"file":"tabulator_esm.min.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/Module.js","../../src/js/core/tools/Helpers.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/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/select.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/plaintext.js","../../src/js/modules/Format/defaults/formatters.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/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/defaults/undoers.js","../../src/js/modules/History/History.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/Import/defaults/importers/csv.js","../../src/js/modules/Import/Import.js","../../src/js/modules/Import/defaults/importers/json.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/Keybindings/defaults/actions.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/Page.js","../../src/js/modules/Page/defaults/pageCounters/pages.js","../../src/js/modules/Page/defaults/pageCounters.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.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/date.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/Sort.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/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/TableRegistry.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/defaults/modes.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/Tabulator.js","../../src/js/core/row/PseudoRow.js"],"sourcesContent":["export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key){\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registation ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = func;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Module;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn clone;\r\n\t}\r\n}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {}","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nexport default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\r\n\t\t\tvar output = generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.config = {}; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\t\t\r\n\t\tthis.loaderPromise = false;\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\t\t\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\t\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\t\t\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\r\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\t\r\n\trequestParams(data, config, silent, params){\r\n\t\tvar ajaxParams = this.table.options.ajaxParams;\r\n\t\t\r\n\t\tif(ajaxParams){\r\n\t\t\tif(typeof ajaxParams === \"function\"){\r\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tparams = Object.assign(params, ajaxParams);\r\n\t\t}\t\t\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\t\r\n\trequestData(url, params, config, silent, previousData){\r\n\t\tvar ajaxConfig;\r\n\t\t\r\n\t\tif(!previousData && this.requestDataCheck(url)){\r\n\t\t\tif(url){\r\n\t\t\t\tthis.setUrl(url);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tajaxConfig = this.generateConfig(config);\r\n\t\t\t\r\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetDefaultConfig(config = {}){\r\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(this.config, config);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//load config object\r\n\tgenerateConfig(config = {}){\r\n\t\tvar ajaxConfig = Object.assign({}, this.config)\r\n\t\t\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tajaxConfig.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(ajaxConfig, config);\r\n\t\t}\r\n\t\t\r\n\t\treturn ajaxConfig;\r\n\t}\r\n\t\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\t\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\t\r\n\t//send ajax request\r\n\tsendRequest(url, params, config){\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\r\n\t\t\treturn this.loaderPromise(url, config, params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\tmethod: \"GET\",\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//update tooltip on mouse enter\r\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\"){\r\n\t\t\telement.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\t\tthis._generateTooltip();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//generate tooltip text\r\n\t_generateTooltip(){\r\n\t\tvar tooltip = this.column.tooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\ttooltip = this.value;\r\n\t\t\t}else if(typeof(tooltip) == \"function\"){\r\n\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof tooltip === \"undefined\"){\r\n\t\t\t\ttooltip = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate){\r\n\t\tvar changed = this.setValueProcessData(value, mutate);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tif(this.column.definition.cellEdited){\r\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value !== value){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\t\tthis._generateTooltip();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import Column from './Column.js';\r\n\r\n//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this._column.getTitleDownload();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"maxInitialWidth\": undefined,\r\n\t\"tooltip\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerTooltip\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.tooltip = false; //hold column tooltip\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleDownload = null;\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.maxInitialWidth = null;\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\tsetTooltip(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\t//set header tooltips\r\n\t\tvar tooltip = def.headerTooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(def.field){\r\n\t\t\t\t\tthis.langBind(\"columns|\" + def.field, (value) => {\r\n\t\t\t\t\t\tthis.element.setAttribute(\"title\", value || def.title);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.element.setAttribute(\"title\", def.title);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof(tooltip) == \"function\"){\r\n\t\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.setTooltip();\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\r\n\t\t//update header tooltip on mouse enter\r\n\t\tthis.element.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\tthis.setTooltip();\r\n\t\t});\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif (def.maxInitialWidth) {\r\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set tooltip if present\r\n\t\tthis.tooltip = this.definition.tooltip;\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\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);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this.titleDownload;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\t// maxInitialWidth ignored here as width specified\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData(force);\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(force){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tvar setTo = maxWidth + 1;\r\n\t\t\t\tif (this.maxInitialWidth && !force) {\r\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\r\n\t\t\t\t}\r\n\t\t\t\tthis.setWidthActual(setTo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //holde lements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.created = false;\r\n\r\n\t\tthis.setData(data);\r\n\t}\r\n\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\tthis.element = el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\r\n\t\tif(!this.initialized || force){\r\n\r\n\t\t\tthis.deleteCells();\r\n\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\r\n\t\t\tthis.generateCells();\r\n\r\n\t\t\tthis.initialized = true;\r\n\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t}\r\n\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tvar height = cell.getHeight();\r\n\t\t\tif(height > maxHeight){\r\n\t\t\t\tmaxHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t}else{\r\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t}\r\n\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\t\tif(force){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis.calcHeight(force);\r\n\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\r\n\t\t\tthis.manualHeight = true;\r\n\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\r\n\t\t\tthis.setCellHeight();\r\n\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\r\n\t\t\t//this.reinitialize();\r\n\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\r\n\t\tthis.deleteActual();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\r\n\t\tthis.detatchModules();\r\n\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\r\n\t\tthis.deleteCells();\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tif(this.topRow){\r\n\t\t\trows.unshift(this.topRow);\r\n\t\t}\r\n\r\n\t\tif(this.botRow){\r\n\t\t\trows.push(this.botRow);\r\n\t\t}\r\n\t\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRowsRefresh(){\r\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\r\n\t\t\tthis.recalcAll();\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.table.footerManager.remove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.table.footerManager.prepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(row);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeElementField(){\r\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\r\n\r\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\t}\r\n\t\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tvar field = cell.column.getField();\r\n\r\n\t\tif(field === this.elementField){\r\n\t\t\tthis.layoutRow(cell.row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowExpanded(row){\r\n\t\treturn row.modules.dataTree.open;\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\nimport jsonLines from './downloaders/jsonLines.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tjsonLines:jsonLines,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function (list, options, setFileContents) {\r\n\tconst fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tconst item = {};\r\n\r\n\t\tswitch (row.type) {\r\n\t\t\tcase \"header\":\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\t\tif (col) {\r\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tfileContents.push(JSON.stringify(item));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\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 }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\r\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}});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\n\r\n//dropdown select editor\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : []),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tmultiselect = editorParams.multiselect,\r\n\tdataItems = [],\r\n\tcurrentItem = {},\r\n\tdisplayItems = [],\r\n\tcurrentItems = [],\r\n\tblurable = true,\r\n\tblockListShow = false,\r\n\tsearchWord = \"\",\r\n\tsearchWordTimeout = null;\r\n\r\n\tif(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === \"object\" && !editorParams.values)){\r\n\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\r\n\t\teditorParams = {values:editorParams};\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\r\n\t\t}\r\n\r\n\t\treturn Object.keys(output);\r\n\t}\r\n\r\n\tfunction parseItems(inputValues, curentValues){\r\n\t\tvar dataList = [];\r\n\t\tvar displayList = [];\r\n\r\n\t\tfunction processComplexListItem(item){\r\n\t\t\tvar item = {\r\n\t\t\t\tlabel:item.label,\r\n\t\t\t\tvalue:item.value,\r\n\t\t\t\titemParams:item.itemParams,\r\n\t\t\t\telementAttributes: item.elementAttributes,\r\n\t\t\t\telement:false,\r\n\t\t\t};\r\n\r\n\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t// }\r\n\r\n\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\tsetItem(item);\r\n\t\t\t}\r\n\r\n\t\t\tdataList.push(item);\r\n\t\t\tdisplayList.push(item);\r\n\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif(typeof inputValues == \"function\"){\r\n\t\t\tinputValues = inputValues(cell);\r\n\t\t}\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\r\n\t\t\t\t\tif(value.options){\r\n\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\tlabel:value.label,\r\n\t\t\t\t\t\t\tgroup:true,\r\n\t\t\t\t\t\t\titemParams:value.itemParams,\r\n\t\t\t\t\t\t\telementAttributes:value.elementAttributes,\r\n\t\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdisplayList.push(item);\r\n\r\n\t\t\t\t\t\tvalue.options.forEach(function(item){\r\n\t\t\t\t\t\t\tprocessComplexListItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tprocessComplexListItem(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\titem = {\r\n\t\t\t\t\t\tlabel:value,\r\n\t\t\t\t\t\tvalue:value,\r\n\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\t\tsetItem(item);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataList.push(item);\r\n\t\t\t\t\tdisplayList.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tlabel:inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t\telement:false,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\tsetItem(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataList.push(item);\r\n\t\t\t\tdisplayList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(editorParams.sortValuesList){\r\n\t\t\tdataList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tdisplayList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList !== \"asc\"){\r\n\t\t\t\tdataList.reverse();\r\n\t\t\t\tdisplayList.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataItems = dataList;\r\n\t\tdisplayItems = displayList;\r\n\r\n\t\tfillList();\r\n\t}\r\n\r\n\tfunction fillList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\r\n\t\t\t\tif(item.group){\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\r\n\t\t\t\t\tel.addEventListener(\"click\", function(){\r\n\t\t\t\t\t\tblockListShow = true;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tblockListShow = false;\r\n\t\t\t\t\t\t}, 10);\r\n\r\n\t\t\t\t\t\t// setCurrentItem(item);\r\n\t\t\t\t\t\t// chooseItem();\r\n\t\t\t\t\t\tif(multiselect){\r\n\t\t\t\t\t\t\ttoggleItem(item);\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tchooseItem(item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// if(item === currentItem){\r\n\t\t\t\t\t// \tel.classList.add(\"active\");\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(currentItems.indexOf(item) > -1){\r\n\t\t\t\t\t\tel.classList.add(\"active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n\t\t\t\t\tfor (let key in item.elementAttributes){\r\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\t\t\t\tkey = key.slice(1);\r\n\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction setCurrentItem(item, active){\r\n\r\n\t\tif(!multiselect && currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"focused\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item.element){\r\n\t\t\titem.element.classList.add(\"focused\");\r\n\t\t\tif(active){\r\n\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// function chooseItem(){\r\n\t// \thideList();\r\n\r\n\t// \tif(initialValue !== currentItem.value){\r\n\t// \t\tinitialValue = currentItem.value;\r\n\t// \t\tsuccess(currentItem.value);\r\n\t// \t}else{\r\n\t// \t\tcancel();\r\n\t// \t}\r\n\t// }\r\n\r\n\tfunction setItem(item) {\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index == -1){\r\n\t\t\tcurrentItems.push(item);\r\n\t\t\tsetCurrentItem(item, true);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\t}\r\n\r\n\tfunction unsetItem(index) {\r\n\t\tvar item = currentItems[index];\r\n\r\n\t\tif(index > -1){\r\n\t\t\tcurrentItems.splice(index, 1);\r\n\t\t\tif(item.element){\r\n\t\t\t\titem.element.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleItem(item) {\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tunsetItem(index);\r\n\t\t}else{\r\n\t\t\tif(multiselect !== true && currentItems.length >= multiselect){\r\n\t\t\t\tunsetItem(0);\r\n\t\t\t}\r\n\r\n\t\t\tsetItem(item);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\r\n\t}\r\n\r\n\tfunction chooseItem(item){\r\n\t\thideList();\r\n\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tif(item){\r\n\t\t\tinput.value = item.label;\r\n\t\t\tsuccess(item.value);\r\n\t\t}\r\n\r\n\t\tinitialDisplayValue = [item.value];\r\n\t}\r\n\r\n\r\n\tfunction chooseItems(silent){\r\n\t\tif(!silent){\r\n\t\t\thideList();\r\n\t\t}\r\n\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.value);\r\n\t\t});\r\n\r\n\t\tinitialDisplayValue = output;\r\n\r\n\t\tsuccess(output);\r\n\t}\r\n\r\n\tfunction fillInput(){\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.label);\r\n\t\t});\r\n\r\n\t\tinput.value = output.join(\", \");\r\n\r\n\t\tif(self.currentCell === false){\r\n\t\t\tchooseItems(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction unsetItems() {\r\n\r\n\t\tvar len = currentItems.length;\r\n\r\n\t\tfor(let i = 0; i < len; i++){\r\n\t\t\tunsetItem(0);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tcurrentItems = [];\r\n\r\n\t\tif(!listEl.parentNode){\r\n\t\t\tif(editorParams.values === true){\r\n\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\r\n\t\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\r\n\t\t\t}else{\r\n\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\r\n\r\n\t\t\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tblurable = false;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tblurable = true;\r\n\t\t\t\t}, 10);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\tfunction scrollTovalue(char){\r\n\r\n\t\tclearTimeout(searchWordTimeout);\r\n\r\n\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\r\n\t\tsearchWord += character.toLowerCase();\r\n\r\n\t\tvar match = dataItems.find((item) => {\r\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tsetCurrentItem(match, !multiselect);\r\n\t\t}\r\n\r\n\t\tsearchWordTimeout = setTimeout(() => {\r\n\t\t\tsearchWord = \"\";\r\n\t\t}, 800)\r\n\t}\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\tinput.style.cursor = \"default\";\r\n\tinput.readOnly = (this.currentCell != false);\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\r\n\r\n\t// if(editorParams.values === true){\r\n\t// \tparseItems(getUniqueColumnValues(), initialValue);\r\n\t// }else if(typeof editorParams.values === \"string\"){\r\n\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\r\n\t// }else{\r\n\t// \tparseItems(editorParams.values || [], initialValue);\r\n\t// }\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tif(!input.value){\r\n\t\t\tunsetItems();\r\n\t\t\tchooseItems();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < dataItems.length - 1)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < dataItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\t// chooseItem();\r\n\r\n\t\t\tif(multiselect){\r\n\t\t\t\ttoggleItem();\r\n\t\t\t}else{\r\n\t\t\t\tchooseItem();\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(self.currentCell === false){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\r\n\t\t\t\tscrollTovalue(e.keyCode);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tchooseItems();\r\n\t\t\t}else{\r\n\t\t\t\tcancelItem();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tif(!blockListShow){\r\n\t\t\tshowList();\r\n\t\t}\r\n\t});\r\n\r\n\t//style list element\r\n\tlistEl = document.createElement(\"div\");\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\nimport maskInput from '../../inputMask.js';\r\n\r\n//autocomplete\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\"),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tallItems = [],\r\n\tdisplayItems = [],\r\n\tvalues = [],\r\n\tcurrentItem = false,\r\n\tblurable = true,\r\n\tuniqueColumnValues = false;\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"search\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style list element\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\tblurable = false;\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tblurable = true;\r\n\t\t}, 10);\r\n\t});\r\n\r\n\r\n\tfunction genUniqueColumnValues(){\r\n\t\tif(editorParams.values === true){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues();\r\n\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList){\r\n\t\t\t\tif(editorParams.sortValuesList == \"asc\"){\r\n\t\t\t\t\toutput = Object.keys(output).sort();\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput = Object.keys(output).sort().reverse();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\toutput = Object.keys(output);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\r\n\t\t}\r\n\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfunction filterList(term, intialLoad){\r\n\t\tvar matches = [],\r\n\t\tvalues, items, searchEl;\r\n\r\n\t\t//lookup base values list\r\n\t\tif(uniqueColumnValues){\r\n\t\t\tvalues = uniqueColumnValues;\r\n\t\t}else{\r\n\t\t\tvalues = editorParams.values || [];\r\n\t\t}\r\n\r\n\t\tif(editorParams.searchFunc){\r\n\t\t\tmatches = editorParams.searchFunc(term, values);\r\n\r\n\t\t\tif(matches instanceof Promise){\r\n\r\n\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\r\n\r\n\t\t\t\tmatches.then((result) => {\r\n\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\titems = parseItems(values);\r\n\r\n\t\t\tif(term === \"\"){\r\n\t\t\t\tif(editorParams.showListOnEmpty){\r\n\t\t\t\t\tmatches = items;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\titems.forEach(function(item){\r\n\t\t\t\t\tif(item.value !== null || typeof item.value !== \"undefined\"){\r\n\t\t\t\t\t\tif(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){\r\n\t\t\t\t\t\t\tmatches.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfillListIfNotEmpty(matches, intialLoad);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addNotice(notice){\r\n\t\tvar searchEl = document.createElement(\"div\");\r\n\r\n\t\tclearList();\r\n\r\n\t\tif(notice !== false){\r\n\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\r\n\t\t\tsearchEl.tabIndex = 0;\r\n\r\n\t\t\tif(notice instanceof Node){\r\n\t\t\t\tsearchEl.appendChild(notice);\r\n\t\t\t}else{\r\n\t\t\t\tsearchEl.innerHTML = notice;\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(searchEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parseItems(inputValues){\r\n\t\tvar itemList = [];\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\r\n\t\t\t\tvar item = {};\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\r\n\t\t\t\t\titem.value = value.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\r\n\t\t\t\t\titem.value = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttitle:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tfunction clearList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\t}\r\n\r\n\tfunction fillListIfNotEmpty(items, intialLoad){\r\n\t\tif(items.length){\r\n\t\t\tfillList(items, intialLoad);\r\n\t\t}else{\r\n\t\t\tif(editorParams.emptyPlaceholder){\r\n\t\t\t\taddNotice(editorParams.emptyPlaceholder);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillList(items, intialLoad){\r\n\t\tvar current = false;\r\n\r\n\t\tclearList();\r\n\r\n\t\tdisplayItems = items;\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\tel.innerHTML = item.title;\r\n\r\n\t\t\t\tel.addEventListener(\"click\", function(e){\r\n\t\t\t\t\tsetCurrentItem(item);\r\n\t\t\t\t\tchooseItem();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\t\t\t\tif(intialLoad && item.value == initialValue){\r\n\t\t\t\t\tinput.value = item.title;\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item === currentItem){\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\r\n\t\tif(!current){\r\n\t\t\tsetCurrentItem(false);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction chooseItem(){\r\n\t\thideList();\r\n\r\n\t\tif(currentItem){\r\n\t\t\tif(initialValue !== currentItem.value){\r\n\t\t\t\tinitialValue = currentItem.value;\r\n\t\t\t\tinput.value = currentItem.title;\r\n\t\t\t\tsuccess(currentItem.value);\r\n\t\t\t}else{\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(editorParams.freetext){\r\n\t\t\t\tinitialValue = input.value;\r\n\t\t\t\tsuccess(input.value);\r\n\t\t\t}else{\r\n\t\t\t\tif(editorParams.allowEmpty && input.value === \"\"){\r\n\t\t\t\t\tinitialValue = input.value;\r\n\t\t\t\t\tsuccess(input.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tif(!listEl.parentNode){\r\n\t\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentItem(item, showInputValue){\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item && item.element){\r\n\t\t\titem.element.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsetCurrentItem(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < displayItems.length - 1)){\r\n\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < displayItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\t// e.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tchooseItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 36: //home\r\n\t\t\tcase 35: //end\r\n\t\t\t//prevent table navigation while using input element\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"keyup\", function(e){\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //up arrow\r\n\t\t\tcase 40: //right arrow\r\n\t\t\tcase 13: //enter\r\n\t\t\tcase 27: //escape\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tfilterList(input.value);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tfilterList(input.value);\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tchooseItem();\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tvar value = initialDisplayValue;\r\n\t\tgenUniqueColumnValues();\r\n\t\tshowList();\r\n\t\tinput.value = value;\r\n\t\tfilterList(value, true);\r\n\t});\r\n\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\tgenUniqueColumnValues();\r\n\tinput.value = initialDisplayValue;\r\n\tfilterList(initialDisplayValue, true);\r\n\r\n\treturn input;\r\n};","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false;\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn input.checked;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(cell, e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.table.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(cell = this.currentCell, e){\r\n\t\tvar nextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(cell = this.currentCell, e){\r\n\t\tvar nextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tif(cancel){\r\n\t\t\t\tif(cell.column.modules.validate && this.table.modExists(\"validate\")){\r\n\t\t\t\t\tthis.table.modules.validate.cellValidate(cell);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = true;\r\n\r\n\t\t\t\tif(cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\"){\r\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\tif(valid !== true){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tif(cell.modules.validate){\r\n\t\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;\r\n","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\r\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\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\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\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\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\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\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.styleCells[index] || styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.styleCells[index] || styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\t\tthis.tableInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.tableInitialized = true;\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\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);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft + parseInt(this.table.columnManager.element.style.marginLeft);\r\n\r\n\t\t\t\t\tif(left !== headerPos){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.headerElement.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.tableInitialized){\r\n\t\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\t\tthis.reloadData();\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters());\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tsign = \"\",\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tif(floatVal < 0){\r\n\t\tfloatVal = Math.abs(floatVal);\r\n\t\tsign = negativeSign;\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\twhile (rgx.test(integer)){\r\n\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t}\r\n\r\n\treturn after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = data[formatterParams.labelField];\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = inputFormat === \"iso\" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat);\r\n\r\n\t\tif(newDatetime.isValid){\r\n\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.shiftTimezone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\r\n\t\t\tif(invalid === true || !value){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\t\r\n\t\tvar newDatetime = inputFormat === \"iso\" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat);\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\t// return moment.duration(newDatetime.diff(date)).humanize(suffix);\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\tvar blocked = false;\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\r\n\t\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\t\tif(!blocked){\r\n\t\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tblocked = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\tblocked = true;\r\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\t\tthis.blocked = true;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\t\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\r\n\t}\r\n\t\r\n\tblockLayout(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\t\r\n\tunblockLayout(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n\t\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\t\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\t\t\r\n\t\tif(!column.isGroup){\r\n\t\t\t\r\n\t\t\tif(this.frozenCheck(column)){\r\n\t\t\t\t\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\t\t\t\t\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.active = true;\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfrozenCheck(column){\r\n\t\tvar frozen = false;\r\n\t\t\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\t\t\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\t\t\r\n\t\treturn frozen;\r\n\t}\r\n\t\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\t\t\t\r\n\t\t\tthis.calcMargins(true);\r\n\t\t\t\r\n\t\t\tthis.layoutColumnPosition();\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t//calculate margins for rows\r\n\tcalcMargins(scroll){\r\n\t\t\r\n\t\tif(!scroll){\r\n\t\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\t\t\t\r\n\t\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\t\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\t\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\t\tvar leftParents = [];\r\n\t\t\r\n\t\tvar leftMargin = 0;\r\n\t\tvar rightMargin = 0;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\t\r\n\t\t\tcolumn.modules.frozen.margin = (leftMargin + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tleftMargin += column.getWidth();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\trightMargin += column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - rightMargin) + \"px\";\r\n\t\t\t\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\t\r\n\t//layout columns appropriately\r\n\tlayout(){\r\n\t\tif(this.active && !this.blocked){\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\t\t\r\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\r\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\r\n\t\t}\r\n\t\t\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tlayoutElement(element, column){\r\n\t\t\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\t\t\t\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\t\t\t\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\t\t\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trows.push(row);\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\t\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.element = false;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\t\t\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\t\t\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\tif(row.modules){\r\n\t\t\t\t\tdelete row.modules.group;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.arrowElement = false;\r\n\t\tthis.elementContents = false;\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\t\t\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\taddBindings(){\r\n\t\tvar toggleElement;\r\n\t\t\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\t\t\t\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\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);\r\n\t\t\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\t\r\n\t_addRowToGroup(row){\r\n\t\t\r\n\t\tvar level = this.level + 1;\r\n\t\t\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\t\t\t\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\t\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\t\t\r\n\t\trow.updateData(data);\r\n\t\t\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\t\t\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\trow.modules.group = this;\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\t\r\n\tscrollHeader(left){\r\n\t\tif(this.arrowElement){\r\n\t\t\tthis.arrowElement.style.marginLeft = left;\r\n\t\t\t\r\n\t\t\tthis.groupList.forEach(function(child){\r\n\t\t\t\tchild.scrollHeader(left);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowIndex(row){}\r\n\t\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\t\t\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\t\t\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\t\t\t\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\t\t\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\t\t\t\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\toutput.push(this);\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\t\t\t\t\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\t\t\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\t\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\t\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\t\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tvar prev = this.generateElement();\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\t\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tif(typeof this.visible == \"function\"){\r\n\t\t\t\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\t\t\t\t\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\t\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\t\r\n\t////////////// Standard Row Functions //////////////\r\n\t\r\n\tgetElement(){\r\n\t\treturn this.elementContents ? this.element : this.generateElement();\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.addBindings = false;\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\t\t\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\t// this.addBindings();\r\n\t\t\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\t\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\t\t\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\t\r\n\treinitializeHeight(){}\r\n\t\r\n\tcalcHeight(){}\r\n\t\r\n\tsetCellHeight(){}\r\n\t\r\n\tclearCellHeight(){}\r\n\t\r\n\tdeinitializeHeight(){}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureGroupSetup(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.initialize();\r\n\t\t}else{\r\n\t\t\tthis.configureGroupSetup();\r\n\t\t}\r\n\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.configureGroupSetup();\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\r\n\r\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList = [];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Row from '../../core/row/Row.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","import Module from '../../core/Module.js';\r\nimport Column from '../../core/column/Column.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\r\n\t\t\tthis.parseTable();\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.originalElement,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for Tabulator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for Tabulator inline options\r\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","function csvImporter(input){\r\n var data = [],\r\n row = 0, \r\n col = 0,\r\n inQuote = false;\r\n \r\n //Iterate over each character\r\n for (let index = 0; index < input.length; index++) {\r\n let char = input[index], \r\n nextChar = input[index+1]; \r\n \r\n //Initialize empty row\r\n if(!data[row]){\r\n data[row] = [];\r\n }\r\n\r\n //Initialize empty column\r\n if(!data[row][col]){\r\n data[row][col] = \"\";\r\n }\r\n \r\n //Handle quotation mark inside string\r\n if (char == '\"' && inQuote && nextChar == '\"') { \r\n data[row][col] += char; \r\n index++;\r\n continue; \r\n }\r\n \r\n //Begin / End Quote\r\n if (char == '\"') { \r\n inQuote = !inQuote;\r\n continue;\r\n }\r\n \r\n //Next column (if not in quote)\r\n if (char == ',' && !inQuote) { \r\n col++;\r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CRLF) \r\n if (char == '\\r' && nextChar == '\\n' && !inQuote) { \r\n col = 0; \r\n row++; \r\n index++; \r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CR or LF) \r\n if ((char == '\\r' || char == '\\n') && !inQuote) { \r\n col = 0;\r\n row++;\r\n continue; \r\n }\r\n\r\n //Normal Character, append to column\r\n data[row][col] += char;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport default csvImporter;","import Module from '../../core/Module.js';\r\n\r\nimport defaultImporters from './defaults/importers.js';\r\n\r\nclass Import extends Module{\r\n \r\n constructor(table){\r\n super(table);\r\n \r\n this.registerTableOption(\"importFormat\");\r\n this.registerTableOption(\"importReader\", \"text\");\r\n }\r\n \r\n initialize(){\r\n this.registerTableFunction(\"import\", this.importFromFile.bind(this));\r\n\r\n if(this.table.options.importFormat){\r\n this.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\r\n this.subscribe(\"data-load\", this.loadData.bind(this), 10);\r\n }\r\n }\r\n\r\n loadDataCheck(data){\r\n return typeof data === \"string\";\r\n }\r\n\r\n loadData(data, params, config, silent, previousData){\r\n return this.importData(this.lookupImporter(), data)\r\n .then(this.structureData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import data\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n\r\n lookupImporter(importFormat){\r\n var importer;\r\n \r\n if(!importFormat){\r\n importFormat = this.table.options.importFormat;\r\n }\r\n \r\n if(typeof importFormat === \"string\"){\r\n importer = Import.importers[importFormat];\r\n }else{\r\n importer = importFormat;\r\n }\r\n\r\n if(!importer){\r\n console.error(\"Import Error - Importer not found:\", importFormat);\r\n }\r\n \r\n return importer;\r\n }\r\n \r\n importFromFile(importFormat, extension){\r\n var importer = this.lookupImporter(importFormat);\r\n \r\n if(importer){\r\n return this.pickFile(extension)\r\n .then(this.importData.bind(this, importer))\r\n .then(this.structureData.bind(this))\r\n .then(this.setData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import file\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n }\r\n \r\n pickFile(extensions){\r\n return new Promise((resolve, reject) => {\r\n var input = document.createElement(\"input\");\r\n input.type = \"file\";\r\n input.accept = extensions;\r\n \r\n input.addEventListener(\"change\", (e) => {\r\n var file = input.files[0],\r\n reader = new FileReader(),\r\n data;\r\n \r\n switch(this.table.options.importReader){\r\n case \"buffer\":\r\n reader.readAsArrayBuffer(file);\r\n break;\r\n\r\n case \"binary\":\r\n reader.readAsBinaryString(file);\r\n break;\r\n\r\n case \"url\":\r\n reader.readAsDataURL(file);\r\n break;\r\n\r\n case \"text\":\r\n default:\r\n reader.readAsText(file);\r\n }\r\n \r\n reader.onload = (e) => {\r\n resolve(reader.result)\r\n };\r\n \r\n reader.onerror = (e) => {\r\n console.warn(\"File Load Error - Unable to read file\");\r\n reject();\r\n };\r\n });\r\n \r\n input.click();\r\n });\r\n }\r\n \r\n importData(importer, fileContents){\r\n var data = importer.call(this.table, fileContents);\r\n \r\n if(data instanceof Promise){\r\n return data;\r\n }else{\r\n return data ? Promise.resolve(data) : Promise.reject();\r\n }\r\n }\r\n\r\n structureData(parsedData){\r\n var data = [];\r\n \r\n if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\r\n if(this.table.options.autoColumns){\r\n data = this.structureArrayToObject(parsedData);\r\n }else{\r\n data = this.structureArrayToColumns(parsedData);\r\n }\r\n\r\n return data;\r\n }else{\r\n return parsedData;\r\n }\r\n }\r\n\r\n structureArrayToObject(parsedData){\r\n var columns = parsedData.shift();\r\n\r\n var data = parsedData.map((values) => {\r\n var row = {};\r\n\r\n columns.forEach((key, i) => {\r\n row[key] = values[i];\r\n })\r\n\r\n return row;\r\n })\r\n\r\n return data;\r\n }\r\n\r\n structureArrayToColumns(parsedData){\r\n var data = [],\r\n columns = this.table.getColumns();\r\n\r\n //remove first row if it is the column names\r\n if(columns[0] && parsedData[0][0]){\r\n if(columns[0].getDefinition().title === parsedData[0][0]){\r\n parsedData.shift();\r\n }\r\n }\r\n \r\n //convert row arrays to objects\r\n parsedData.forEach((rowData) => {\r\n var row = {};\r\n\r\n rowData.forEach((value, index) => {\r\n var column = columns[index];\r\n\r\n if(column){\r\n row[column.getField()] = value;\r\n }\r\n })\r\n\r\n data.push(row);\r\n });\r\n\r\n return data;\r\n }\r\n \r\n setData(data){\r\n return this.table.setData(data);\r\n }\r\n}\r\n\r\nImport.moduleName = \"import\";\r\n\r\n//load defaults\r\nImport.importers = defaultImporters;\r\n\r\nexport default Import;","export default function(input){\r\n try {\r\n return JSON.parse(input);\r\n } catch(e) {\r\n console.warn(\"JSON Import Error - File contents is invalid JSON\", e);\r\n return Promise.reject();\r\n }\r\n}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tgroup:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\r\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\r\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 89\"],\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings)\r\n\t\t\tObject.assign(mergedBindings, bindings)\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tbindingList.forEach((item) => {\r\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\r\n\t\t\t\t\t\t});\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Menu extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.menuContainer = null;\r\n\t\tthis.menuElements = [];\r\n\t\tthis.blurEvent = this.hideMenu.bind(this);\r\n\t\tthis.escEvent = this.escMenu.bind(this);\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\tthis.positionReversedX = false;\r\n\t\t\r\n\t\tthis.currentComponent = null;\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\t\tthis.registerTableOption(\"menuContainer\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerClickMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.lookupMenuContainer();\r\n\t\t\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tlookupMenuContainer(){\r\n\t\t\r\n\t\tthis.menuContainer = this.table.options.menuContainer;\r\n\t\t\r\n\t\tif(typeof this.menuContainer === \"string\"){\r\n\t\t\tthis.menuContainer = document.querySelector(this.menuContainer);\r\n\t\t\t\r\n\t\t\tif(!this.menuContainer){\r\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.menuContainer , \"(defaulting to document body)\");\r\n\t\t\t}\r\n\t\t}else if (this.menuContainer === true){\r\n\t\t\tthis.menuContainer = this.table.element;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.menuContainer && !this.checkMenuContainerIsParent(this.menuContainer)){\r\n\t\t\tthis.menuContainer = false;\r\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.menuContainer , \"(defaulting to document body)\");\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.menuContainer){\r\n\t\t\tthis.menuContainer = document.body;\r\n\t\t}\r\n\t}\r\n\t\r\n\tcheckMenuContainerIsParent(container, element = this.table.element){\r\n\t\tif(container === element){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\treturn element.parentNode ? this.checkMenuContainerIsParent(container, element.parentNode) : false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextMenu\", \"headerClickMenu\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\r\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\r\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerMenu){\r\n\t\t\tthis.initializeColumnHeaderMenu(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\r\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\r\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderMenu(column){\r\n\t\tvar headerMenuEl;\r\n\t\t\r\n\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\r\n\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\t\t\r\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadMenuTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuEvent(menu, e, component){\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\r\n\t\t\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\t\r\n\tloadMenu(e, component, menu, parentEl){\r\n\t\tvar touch = !(e instanceof MouseEvent);\r\n\t\t\r\n\t\tvar menuEl = document.createElement(\"div\");\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\t\t\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.isOpen()){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.hideMenu();\r\n\t\t\tthis.menuElements = [];\r\n\t\t}\r\n\t\t\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\t\t\t\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\t\t\t\t\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.hideOldSubMenus(menuEl);\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\t\t\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.hideMenu();\r\n\t\t});\r\n\t\t\r\n\t\tthis.menuElements.push(menuEl);\r\n\t\tthis.positionMenu(menuEl, parentEl, touch, e);\r\n\t\t\r\n\t\tthis.currentComponent = component\r\n\t\t\r\n\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent())\r\n\t}\r\n\t\r\n\thideOldSubMenus(menuEl){\r\n\t\tvar index = this.menuElements.indexOf(menuEl);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tfor(let i = this.menuElements.length - 1; i > index; i--){\r\n\t\t\t\tvar el = this.menuElements[i];\r\n\t\t\t\t\r\n\t\t\t\tif(el.parentNode){\r\n\t\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.menuElements.pop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tpositionMenu(element, parentEl, touch, e){\r\n\t\tvar x, y, parentOffset;\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tx = touch ? e.touches[0].pageX : e.pageX;\r\n\t\t\ty = touch ? e.touches[0].pageY : e.pageY;\r\n\t\t\t\r\n\t\t\tif(this.menuContainer !== document.body){\r\n\t\t\t\tparentOffset = Helpers.elOffset(this.menuContainer);\r\n\t\t\t\t\r\n\t\t\t\tx -= parentOffset.left;\r\n\t\t\t\ty -= parentOffset.top;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.positionReversedX = false;\r\n\t\t}else{\r\n\t\t\tparentOffset = Helpers.elOffset(parentEl);\r\n\t\t\tx = parentOffset.left + parentEl.offsetWidth;\r\n\t\t\ty = parentOffset.top - 1;\r\n\t\t}\r\n\t\t\r\n\t\telement.style.top = y + \"px\";\r\n\t\telement.style.left = x + \"px\";\r\n\t\t\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\r\n\t\t}, 100);\r\n\t\t\r\n\t\tthis.menuContainer.appendChild(element);\r\n\t\t\r\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\r\n\t\tif((x + element.offsetWidth) >= this.menuContainer.offsetWidth || this.positionReversedX){\r\n\t\t\telement.style.left = \"\";\r\n\t\t\t\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.right = (this.menuContainer.offsetWidth - parentOffset.left) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.right = (this.menuContainer.offsetWidth - x) + \"px\";\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.positionReversedX = true;\r\n\t\t}\r\n\t\t\r\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\r\n\t\tif((y + element.offsetHeight) > this.menuContainer.offsetHeight) {\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.top = (parseInt(element.style.top) - element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.top = (parseInt(element.style.top) - element.offsetHeight) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisOpen(){\r\n\t\treturn !!this.menuElements.length;\r\n\t}\r\n\t\r\n\tescMenu(e){\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tthis.hideMenu();\r\n\t\t}\r\n\t}\r\n\t\r\n\thideMenu(){\t\r\n\t\tthis.menuElements.forEach((menuEl) => {\r\n\t\t\tif(menuEl.parentNode){\r\n\t\t\t\tmenuEl.parentNode.removeChild(menuEl);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\r\n\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\r\n\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n\t\twindow.removeEventListener(\"resize\", this.blurEvent);\r\n\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n\t\t\r\n\t\tif(this.currentComponent){\r\n\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\r\n\t\t\tthis.currentComponent = null;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\t\t\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\t\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\t\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableColumns){\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\t\t\r\n\t\tif(!column.modules.frozen){\r\n\t\t\tcolEl = column.getElement();\r\n\t\t\t\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\t\t\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\t\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\t\t\t\t\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\t\t\t\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\t\t\t\t\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\t\t\t\t\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement(),\r\n\t\theaderElement = this.table.columnManager.getElement(),\r\n\t\theadersElement = this.table.columnManager.getHeadersElement();\r\n\t\t\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\t\t\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\t\t\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\t\t\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\t\t\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\t\t\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\r\n\t\t\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\t\t\t\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\t\t\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\t\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\t\t\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\t\t\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\t\t\t\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\t\t\t\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\t\t\t\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\t\t\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\t\t\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\tvar el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\r\n\tif(totalRows){\r\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\r\n\t\t\r\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\r\n\t\t\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(ofEl);\r\n\t\tel.appendChild(totalEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}else{\r\n\t\tvalueEl.innerHTML = \" 0 \";\r\n\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}\r\n\t\r\n\treturn el;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPageCounters from './defaults/pageCounters.js';\r\n\r\nclass Page extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\t\t\r\n\t\tthis.element = null;\r\n\t\tthis.pageCounterElement = null;\r\n\t\tthis.pageCounter = null;\r\n\t\t\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.remoteRowCountEstimate = null;\r\n\t\t\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\t\t\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\t\t\r\n\t\tthis.pageSizes = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\r\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\t\t\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\t\t\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\r\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\t\t\t\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePageCounter();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn {index, top}\r\n\t}\r\n\t\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\t\t\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\t\t\t\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\t\t\t\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\t\t\t\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generatePageSizeSelectList();\r\n\t}\r\n\t\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\t\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\t\t\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn Promise.reject();\r\n\t}\r\n\t\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\t\t\t\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\t\t\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\t\t\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\t\t\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\t\t\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\t\t\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\t\t\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\t\t\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\t\t\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\t\t\t\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\t\t\t\t\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializePageCounter(){\r\n\t\tvar counter = this.table.options.paginationCounter,\r\n\t\tpageCounter = null;\r\n\t\t\r\n\t\tif(counter){\r\n\t\t\tif(typeof counter === \"function\"){\r\n\t\t\t\tpageCounter = counter;\r\n\t\t\t}else{\r\n\t\t\t\tpageCounter = Page.pageCounters[counter];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(pageCounter){\r\n\t\t\t\tthis.pageCounter = pageCounter;\r\n\t\t\t\t\r\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\r\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup pagination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel, paginationCounterHolder;\r\n\t\t\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\t\t\t\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\t\t\t\t\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\t\t\t\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tif(this.table.options.paginationCounter){\r\n\r\n\t\t\t\t\tpaginationCounterHolder \r\n\r\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\r\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\r\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\r\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(paginationCounterHolder){\r\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.footerManager.append(this.pageCounterElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.table.footerManager.append(this.element, this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\t\t}\r\n\t\t\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\t\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\t\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\t\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\t\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\t\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set the maximum page\r\n\tsetMaxPage(max){\r\n\t\t\r\n\t\tmax = parseInt(max);\r\n\t\t\r\n\t\tthis.max = max || 1;\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t\r\n\t\tpage = parseInt(page);\r\n\t\t\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\t\t\t\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\t\t\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\t\t\r\n\t\tthis.trackChanges();\r\n\t}\r\n\t\r\n\t_setPageCounter(totalRows, size, currentRow){\r\n\t\tvar content;\r\n\t\t\r\n\t\tif(this.pageCounter){\r\n\r\n\t\t\tif(this.mode === \"remote\"){\r\n\t\t\t\tsize = this.size;\r\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\r\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\r\n\t\t\t}\r\n\r\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\r\n\t\t\t\r\n\t\t\tswitch(typeof content){\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\tif(content instanceof Node){\r\n\t\t\t\t\t\r\n\t\t\t\t\t//clear previous cell contents\r\n\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageCounterElement.appendChild(content);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(content != null){\r\n\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);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"undefined\":\r\n\t\t\t\tcase \"null\":\r\n\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.pageCounterElement.innerHTML = content;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\t\t\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\t\t\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\t\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\t\t\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\t\t\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\t\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\t\t\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\t\t\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\t\t\r\n\t\treturn button;\r\n\t}\r\n\t\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger()\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\t\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\t\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\t\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\t\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar actualRowPageSize = 0,\r\n\t\toutput, start, end, actualStartRow;\r\n\r\n\t\tvar actualRows = data.filter((row) => {\r\n\t\t\treturn row.type === \"row\";\r\n\t\t});\r\n\t\t\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\t\t\t\r\n\t\t\tthis.setMaxRows(data.length);\r\n\t\t\t\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageButtons();\r\n\t\t\t\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tlet row = data[i];\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\toutput.push(row);\r\n\r\n\t\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\t\tif(!actualStartRow){\r\n\t\t\t\t\t\t\tactualStartRow = row;\r\n\t\t\t\t\t\t}\t\r\n\r\n\t\t\t\t\t\tactualRowPageSize++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\r\n\t\t\t\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\t\t\tthis._setPageCounter(actualRows.length);\r\n\t\t\t\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrigger(){\r\n\t\tvar left;\r\n\t\t\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\t\t\t\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\t\t\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\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));\r\n\t\t\t\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\t\t\t\t\t\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\treturn data.data;\r\n\t}\r\n\t\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.containerElement;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\t\t\t\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\n//load defaults\r\nPage.pageCounters = defaultPageCounters;\r\n\r\nexport default Page;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\r\n var el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\t\r\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tel.appendChild(showingEl);\r\n\tel.appendChild(valueEl);\r\n\tel.appendChild(ofEl);\r\n\tel.appendChild(totalEl);\r\n\tel.appendChild(rowsEl);\r\n\t\r\n\treturn el;\r\n};","import rows from './pageCounters/rows.js';\r\nimport pages from './pageCounters/pages.js';\r\n\r\n\r\nexport default {\r\n\trows:rows,\r\n\tpages:pages,\r\n};","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.slice(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.slice(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};\r\n","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.options.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.options.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\nPersistence.moduleInitOrder = 1;\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar self = this,\r\n\t\tpushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn self.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\t// if(this.table.options.resizableColumns){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCellHandles.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.layoutColumnHeader.bind(this));\r\n\t\t// }\r\n\t}\r\n\t\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.initializeColumn(\"cell\", cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutColumnHeader(column){\r\n\t\tthis.initializeColumn(\"header\", column, column.element);\r\n\t}\r\n\t\r\n\tinitializeColumn(type, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable;\r\n\t\t\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tcolumn.modules.resize = {variableHeight:variableHeight};\r\n\t\t}\r\n\t\t\r\n\t\tif(mode === true || mode == type){\r\n\t\t\t\r\n\t\t\tvar handle = document.createElement('div');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tvar prevHandle = document.createElement('div');\r\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tvar nearestColumn = column.getLastColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn && self._checkResizability(nearestColumn)){\r\n\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//reszie column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar col = column.getLastColumn(),\r\n\t\t\t\toldWidth;\r\n\t\t\t\t\r\n\t\t\t\tif(col && self._checkResizability(col)){\r\n\t\t\t\t\toldWidth = col.getWidth();\r\n\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tcol.reinitializeWidth(true);\r\n\r\n\t\t\t\t\tif(oldWidth !== col.getWidth()){\r\n\t\t\t\t\t\tself.dispatch(\"column-resized\", col);\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", col.getComponent());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar prevHandleDown = function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\t\t\t\t\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\r\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//resize column on double click\r\n\t\t\tprevHandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\t\t\t\t\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\t\t\t\t\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\telement.appendChild(handle);\r\n\t\t\telement.appendChild(prevHandle);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\t\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\t\t\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\t// self.table.columnManager.tempScrollBlock();\r\n\t\t\t\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\t\t\t\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tfunction mouseUp(e){\r\n\t\t\t\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\t\t\t\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\t\t\t\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(self.startWidth !== column.getWidth()){\r\n\t\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\t\t\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\t\t\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.startWidth = column.getWidth();\r\n\t\t\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate responsive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//determine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\r\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort((a, b) => {\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initializeResponsivity();\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\t\t\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\t\t\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\r\n\t\t\t\r\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\t\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\t\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\t\t\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\t\t\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\t\t\t\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\t\t\r\n\t\trow.modules.select = {selected:false};\r\n\t\t\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\t\t\t\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\t\r\n\thandleComplexRowClick(row, e){\r\n\t\tif(e.shiftKey){\r\n\t\t\tthis.table._clearSelection();\r\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\r\n\t\t\t\r\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\r\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\r\n\t\t\t\r\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\r\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\t\t\t\r\n\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\r\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\r\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\r\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.lastClickedRow = row;\r\n\t\t\t}else{\r\n\t\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.selectable !== true){\r\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\r\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectRows(toggledRows);\r\n\t\t\t}\r\n\t\t\tthis.table._clearSelection();\r\n\t\t}\r\n\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\tthis.toggleRow(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}else{\r\n\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\tthis.selectRows(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\t\t\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"string\":\r\n\t\t\t\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\t\t\t\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\t\t\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\t\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\t\t\r\n\t\tif(typeof rows == \"undefined\"){\r\n\t\t\t\r\n\t\t\trowCount = self.selectedRows.length;\r\n\t\t\t\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(rowCount){\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\t\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tgetSelectedRows(){\r\n\t\t\r\n\t\tvar rows = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\t\t\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\t\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\t\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\t\t\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\ta = format === \"iso\" ? DT.fromISO(String(a)) : DT.fromFormat(String(a), format);\r\n\t\tb = format === \"iso\" ? DT.fromISO(String(b)) : DT.fromFormat(String(b), format);\r\n\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData(true);\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.invalidCells = [];\r\n\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? !cell.modules.validate.invalid : true;\r\n\t}\r\n\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trow = row.getComponent();\r\n\r\n\t\t\tvar valid = row.validate();\r\n\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\r\n\t\tif(column.definition.validator){\r\n\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t_buildValidator(type, params){\r\n\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tvalid = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach((item) => {\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tvalid.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalid = valid.length ? valid : true;\r\n\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\r\n\t\tif(valid === true){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = true;\r\n\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //separator for nested data\r\n\r\n\ttooltipGenerationMode:\"load\", //when to generate tooltips\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\tdataLoaderErrorTimeout:3000,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}\r\n","export default class OptionsList {\r\n\tconstructor(table, msgType, defaults = {}){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = Object.assign({}, defaults)\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determine weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\t\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t\t\r\n\t\tthis.fitDataColAvg = 0;\r\n\t\t\r\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\r\n\t\t\r\n\t\tthis.visibleRows = null;\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.isFitData = false;\r\n\t\t\r\n\t\tthis.columns = [];\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.compatibilityCheck();\r\n\t\tthis.layoutCheck();\r\n\t\tthis.vertScrollListen();\r\n\t}\r\n\t\r\n\tcompatibilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\t\t\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\t\t\r\n\t\treturn ok;\r\n\t}\r\n\t\r\n\tlayoutCheck(){\r\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\r\n\t}\r\n\r\n\tvertScrollListen(){\r\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\r\n\t}\r\n\r\n\tclearVisRowCache(){\r\n\t\tthis.visibleRows = null;\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\t\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\t\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\t\t\t\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\r\n\t\t}\r\n\t}\r\n\t\r\n\tcalcWindowBuffer(){\r\n\t\tvar buffer = this.elementVertical.clientWidth;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tif(width > buffer){\r\n\t\t\t\t\tbuffer = width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.windowBuffer = buffer * 2;\r\n\t}\r\n\t\r\n\trerenderColumns(update, blockRedraw){\t\t\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t},\r\n\t\tcolPos = 0;\r\n\t\t\r\n\t\t\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.clear();\r\n\t\t\r\n\t\tthis.calcWindowBuffer();\r\n\t\t\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\t\t\t\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\t\t\t\t\r\n\t\t\t\tconfig.width = width;\r\n\t\t\t\t\r\n\t\t\t\tif (this.isFitData) {\r\n\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t\t\t\t\t//column is visible\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol == -1){\r\n\t\t\t\t\t\tthis.leftCol = this.columns.length;\r\n\t\t\t\t\t\tthis.vDomPadLeft = colPos;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol = this.columns.length;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// column is hidden\r\n\t\t\t\t\tif(this.leftCol !== -1){\r\n\t\t\t\t\t\tthis.vDomPadRight += width;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.vdomHoz = config;\r\n\t\t\t\t\r\n\t\t\t\tcolPos += width;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.reinitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\t\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\t\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\t\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\t\t\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\t\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\t\t\r\n\t\tif(this.isFitData){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.generateCells();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// if(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t// \tbreak;\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// for(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t// \tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\t\t\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn !match;\r\n\t}\r\n\t\r\n\treinitializeRows(){\r\n\t\tvar rows = this.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetVisibleRows(){\r\n\t\tif (!this.visibleRows){\r\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t}\r\n\r\n\t\treturn this.visibleRows;\t\r\n\t}\r\n\t\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\t\r\n\t\t\tlet column = this.columns[this.rightCol + 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t\t\t}\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol - 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\r\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(diff){\r\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\r\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.rightCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\t\t\tthis.rightCol --;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\t\t\tthis.leftCol ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\t\t\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\t\t\t\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn widthDiff;\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\t\t\t\t\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\t\t\t\t\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nimport defaultColumnOptions from './column/defaults/options.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\t\t\tvar topColumn = nextToColumn.getTopColumn()\r\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\r\n\t\t\tvar nextEl = topColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcolumn.columnRendered();\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\tverticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibleColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.clearRows();\r\n\t\tthis.renderRows();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\t// element.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\r\n\t\t});\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\t\tthis.placeholder = null; //placeholder element\r\n\t\tthis.placeholderContents = null; //placeholder element\r\n\t\t\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\t\t\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\t\t\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\t\t\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\t\t\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\t\t\r\n\t\tthis.renderer = null;\r\n\t}\r\n\t\r\n\t//////////////// Setup Functions /////////////////\r\n\t\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitializePlaceholder(){\r\n\t\t//configure placeholder element\r\n\t\tif(typeof this.table.options.placeholder == \"string\"){\r\n\t\t\tlet el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\t\t\t\r\n\t\t\tlet contents = document.createElement(\"div\");\r\n\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\r\n\t\t\tcontents.innerHTML = this.table.options.placeholder;\r\n\t\t\t\r\n\t\t\tel.appendChild(contents);\r\n\t\t\t\r\n\t\t\tthis.placeholderContents = contents;\r\n\t\t\tthis.placeholder = el;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\t\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializePlaceholder()\r\n\t\tthis.initializeRenderer();\r\n\t\t\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\t\t\r\n\t\tthis.firstRender = true;\r\n\t\t\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\t\t\t\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\r\n\t\t\t\tthis._positionPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//handle vertical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\t\t\t\t\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\t\t\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\t\t\r\n\t\treturn match || false;\r\n\t}\r\n\t\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\t\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\t\t\t\t\r\n\t\t\t\tthis._setDataActual(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\t\t\r\n\t\tthis._wipeElements();\r\n\t\t\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\t\t\t\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\t\t\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\t\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\t\t\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\t\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\t\t\t\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlength = data.length - 1;\r\n\t\t\t\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, true);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn pos;\r\n\t}\r\n\t\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\t\t\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\t\t\t\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\t\t\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\t\t\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\t\t\t\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\t\t\t\t\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(top){\r\n\t\t\t\t\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\t\t\r\n\t\tthis.moveRowActual(from, to, after);\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\t\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\t\t\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\t\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\t\t\r\n\t\tif(from !== to){\r\n\t\t\t\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\t\t\t\r\n\t\t\tif (fromIndex > -1) {\r\n\t\t\t\t\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\t\t\t\t\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\t\t\t\t\r\n\t\t\t\tif (toIndex > -1) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\t\t\t\t\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\t\t\t\t\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\t\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\t\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\t\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\t\t\r\n\t\t\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\t\t\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn nextRow;\r\n\t}\r\n\t\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\t\t\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn prevRow;\r\n\t}\r\n\t\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\t\t\r\n\t\trow = this.findRow(row);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\t\t\r\n\t\treturn rows.length;\r\n\t}\r\n\t\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\t\t\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\t\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\t\t\r\n\t\t\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\t\t\t\t\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.renderTable();\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-refreshed\");\r\n\t\t}\r\n\t}\r\n\t\r\n\trefreshPipelines(handler, stage, index, renderInPosition){\r\n\t\tthis.dispatch(\"data-refreshing\");\r\n\t\t\r\n\t\tif(!handler){\r\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t}\r\n\t\t\r\n\t\t//cascade through data refresh stages\r\n\t\tswitch(stage){\r\n\t\t\tcase \"all\":\r\n\t\t\t//handle case where alldata needs refreshing\r\n\t\t\t\r\n\t\t\tcase \"dataPipeline\":\r\n\t\t\t\r\n\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\tindex = 0;\r\n\t\t\tthis.resetDisplayRows();\r\n\t\t\t\r\n\t\t\tcase \"displayPipeline\":\r\n\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\t\t\t\t\r\n\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcase \"end\":\r\n\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t}\r\n\t}\r\n\t\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\t\t\t\t\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\t\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\t\t\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\t\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\t\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\t\t\r\n\t\tvar output = true;\r\n\t\t\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\t\t\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetVisibleRows(chain, viewable){\r\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\r\n\t\t\r\n\t\tif(chain){\r\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\t\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(false, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\t\t\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\t\t\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\t\t\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t\t\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\t\r\n\trenderTable(){\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\t\t\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tthis._clearTable();\r\n\t\t\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis.renderer.renderRows();\r\n\t\t\t\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"table-layout\");\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\t\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\t\t\r\n\t\tthis._clearPlaceholder();\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\t\r\n\t_showPlaceholder(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\t\t\t\r\n\t\t\tthis.getElement().appendChild(this.placeholder);\r\n\t\t\tthis._positionPlaceholder();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_positionPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\r\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\t\t\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\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));\r\n\t\t\t\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.renderer.resize();\r\n\t\t\t\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._positionPlaceholder();\r\n\t}\r\n\t\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\t\t\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\t\t\t\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRenderInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.redrawBlockRenderInPosition = false;\r\n\t}\r\n\t\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t\t\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\t\t\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\t\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.containerElement = this.createContainerElement(); //containing element\r\n\t\tthis.external = false;\r\n\t\tthis.links = [];\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t\r\n\tcreateContainerElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer-contents\");\r\n\r\n\t\tthis.element.appendChild(el);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.containerElement.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(parent){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(parent){\r\n\t\t\tthis.links.push(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.links.forEach(function(link){\r\n\t\t\tlink.footerRedraw();\r\n\t\t});\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\nimport Row from '../row/Row.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\t\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.el = null;\r\n\t\t\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\t\t\r\n\t\tthis.previousTargets = {};\r\n\t\t\r\n\t\tthis.listeners = [\r\n\t\t\t\"click\",\r\n\t\t\t\"dblclick\",\r\n\t\t\t\"contextmenu\",\r\n\t\t\t\"mouseenter\",\r\n\t\t\t\"mouseleave\",\r\n\t\t\t\"mouseover\",\r\n\t\t\t\"mouseout\",\r\n\t\t\t\"mousemove\",\r\n\t\t\t\"touchstart\",\r\n\t\t\t\"touchend\",\r\n\t\t];\r\n\t\t\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\t\t\r\n\t\tthis.pseudoTrackers = {\r\n\t\t\t\"row\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"cell\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"group\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"column\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t}\r\n\t\t\r\n\t\tthis.pseudoTracking = false;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.el = this.table.element;\r\n\t\t\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\t\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\t\t\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\t\t\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\t\r\n\tbindPseudoEvents(){\r\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\r\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\r\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\r\n\t\t});\r\n\t\t\r\n\t\tthis.pseudoTracking = true;\r\n\t}\r\n\t\r\n\tpseudoMouseEnter(key, e, target){\r\n\t\tif(this.pseudoTrackers[key].target !== target){\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.pseudoMouseLeave(key, e);\r\n\t\t\t\r\n\t\t\tthis.pseudoTrackers[key].target = target;\r\n\t\t\t\r\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpseudoMouseLeave(key, e){\r\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\r\n\t\tlinkedKeys = {\r\n\t\t\t\"row\":[\"cell\"],\r\n\t\t\t\"cell\":[\"row\"],\r\n\t\t};\r\n\t\t\r\n\t\tleaveList = leaveList.filter((item) => {\r\n\t\t\tvar links = linkedKeys[key];\r\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\tleaveList.forEach((key) => {\r\n\t\t\tvar target = this.pseudoTrackers[key].target;\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t\t\r\n\t\t\t\tthis.pseudoTrackers[key].target = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\t\t\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\t\t\t\t\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this))\r\n\t}\r\n\t\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\t\t\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\r\n\t\t\tthis.bindPseudoEvents();\r\n\t\t}\r\n\t\t\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\t\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\t\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t\t\r\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\r\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\t\t\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\t\t\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\t\t\t\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\t\t\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\t\t\t\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\r\n\t\t\t\t\t\t\ttargets[key] = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tif(targets[\"row\"] instanceof Row){\r\n\t\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t\t}else{\t\r\n\t\t\t\t\t\t\tif(targets[\"row\"]){\r\n\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?\")\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.previousTargets = targetMatches;\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\t\t\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearWatchers(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.handler){\r\n\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\tlistener.handler = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFunctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, hanlder)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name]){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\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?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\r\n\t\tthis.msgElement = this.createMsgElement(); //message element\r\n\t\tthis.loadingElement = null;\r\n\t\tthis.errorElement = null;\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar template;\r\n\r\n\t\tthis.loaderElement.appendChild(this.msgElement);\r\n\r\n\t\tif(this.table.options.dataLoaderLoading){\r\n\t\t\tif(typeof this.table.options.dataLoaderLoading == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderLoading.trim();\r\n\t\t\t\tthis.loadingElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.loadingElement = this.table.options.dataLoaderLoading;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataLoaderError){\r\n\t\t\tif(typeof this.table.options.dataLoaderError == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderError.trim();\r\n\t\t\t\tthis.errorElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.errorElement = this.table.options.dataLoaderError;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcreateLoaderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-loader\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateMsgElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-loader-msg\");\r\n\t\tel.setAttribute(\"role\", \"alert\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.showLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\r\n\t\t\t\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.hideLoader();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\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\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.hideLoader();\r\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\tshowLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.hideLoader();\r\n\r\n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\r\n\t\t\tthis.msgElement.classList.remove(\"tabulator-error\");\r\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\r\n\r\n\t\t\tif(this.loadingElement){\r\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\r\n\t\t\t}else{\r\n\t\t\t\tthis.msgElement.innerHTML = this.langText(\"data|loading\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n\r\n\tshowError(){\r\n\t\tthis.hideLoader();\r\n\r\n\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\t\tthis.msgElement.classList.remove(\"tabulator-loading\");\r\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\r\n\r\n\t\tif(this.errorElement){\r\n\t\t\tthis.msgElement.appendChild(this.errorElement);\r\n\t\t}else{\r\n\t\t\tthis.msgElement.innerHTML = this.langText(\"data|error\");\r\n\t\t}\r\n\r\n\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t}\r\n\r\n\r\n\thideLoader(){\r\n\t\tif(this.loaderElement.parentNode){\r\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(table, optionsList, debug){\r\n\t\tthis.table = table;\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this.table, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tthis.dispatch(\"layout-refreshing\")\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t\t\"counter\":{\r\n\t\t\t\t\"showing\": \"Showing\",\r\n\t\t\t\t\"of\": \"of\",\r\n\t\t\t\t\"rows\": \"rows\",\r\n\t\t\t\t\"pages\": \"pages\",\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\r\n\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tvar orderedMods = [],\r\n\t\t\tunOrderedMods = [];\r\n\r\n\t\t\tthis.modules = {};\r\n\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\t\t\t\tlet module = new mod(this);\r\n\r\n\t\t\t\tthis.modules[name] = module;\r\n\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore.push(module);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(mod.moduleInitOrder){\r\n\t\t\t\t\t\torderedMods.push(module);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tunOrderedMods.push(module);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\torderedMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\r\n\t\t\tthis.modulesRegular = orderedMods.concat(unOrderedMods);\r\n\t\t}\r\n\t}\r\n\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nclass Tabulator {\r\n\r\n\tconstructor(element, options){\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\r\n\r\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\r\n\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tif(this.initializeElement(element)){\r\n\r\n\t\t\tthis.initializeCoreSystems(options);\r\n\r\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tTableRegistry.register(this); //register table for inter-device communication\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\r\n\t\tthis.bindModules();\r\n\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\r\n\t\tthis._clearObjectPointers();\r\n\r\n\t\tthis._mapDeprecatedFunctionality();\r\n\r\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\r\n\t\tthis.dataLoader.initialize();\r\n\t\t// this.columnManager.initialize();\r\n\t\t// this.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\r\n\t//convert deprecated functionality to new functions\r\n\t_mapDeprecatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t_clearSelection(){\r\n\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tif (window.getSelection) {\r\n\t\t if (window.getSelection().empty) { // Chrome\r\n\t\t \twindow.getSelection().empty();\r\n\t\t } else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t \twindow.getSelection().removeAllRanges();\r\n\t\t }\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\r\n\t//create table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\r\n\t\tthis._rtlCheck();\r\n\r\n\t\tthis._buildElement();\r\n\r\n\t\tthis._initializeTable();\r\n\r\n\t\tthis._loadInitialData();\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_rtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\r\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options,\r\n\t\tnewElement;\r\n\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\r\n\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\r\n\t\tthis.interactionMonitor.initialize();\r\n\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\r\n\t\tthis._detectBrowser();\r\n\r\n\t\t//initialize core modules\r\n\t\tthis.modulesCore.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t})\r\n\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\r\n\t\tif(options.autoColumns && options.data){\r\n\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\r\n\t\t//initialize regular modules\r\n\t\tthis.modulesRegular.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t});\r\n\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t}\r\n\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\r\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\r\n\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\r\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));\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"replaceData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"updateData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\taddData(data, pos, index){\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t\t.then((rows) => {\r\n\t\t\t\t\t\tvar output = [];\r\n\r\n\t\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tresolve(output);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"addData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\r\n\t\tif(this.initialized){\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data){\r\n\t\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\r\n\t\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"updateOrAddData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tif(this.initialized){\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"addRow failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn Promise.resolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\r\n\t}\r\n\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.columnManager.setColumns(definition);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\r\n\tgetColumn(field){\r\n\t\tvar col = this.columnManager.findColumn(field);\r\n\r\n\t\tif(col){\r\n\t\t\treturn col.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from);\r\n\t\tvar toColumn = this.columnManager.findColumn(to);\r\n\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.columnManager.redraw(force);\r\n\t\t\tthis.rowManager.redraw(force);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"redraw failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\r\n\t//////////////////// Event Bus ///////////////////\r\n\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;\r\n","export default class PseudoRow {\r\n\r\n\tconstructor (type){\r\n\t\tthis.type = type;\r\n\t\tthis.element = this._createElement();\r\n\t}\r\n\r\n\t_createElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetComponent(){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn {};\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.outerHeight;\r\n\t}\r\n\r\n\tinitialize(){}\r\n\r\n\treinitialize(){}\r\n\r\n\tnormalizeHeight(){}\r\n\r\n\tgenerateCells(){}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n}"],"names":["CoreFeature","[object Object]","table","this","data","silent","dataLoader","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","options","value","module","Module","name","super","_handler","optionsList","register","columnManager","func","console","warn","component","handler","componentFunctionBinder","priority","rowManager","registerDataPipelineHandler","registerDisplayPipelineHandler","renderInPosition","refreshActiveData","Helpers","el","offsetWidth","offsetHeight","box","getBoundingClientRect","top","window","pageYOffset","document","documentElement","clientTop","left","pageXOffset","clientLeft","obj","clone","list","objectProto","__proto__","arrayProto","i","Object","assign","Array","isArray","match","copy","subject","findIndex","item","unshift","deepClone","Accessor","allowedTypes","registerColumnOption","initializeColumn","transformRow","column","config","forEach","type","accessor","charAt","toUpperCase","slice","definition","lookupAccessor","params","accessors","row","rowComponent","getComponent","traverse","colCompnent","getFieldValue","setFieldValue","moduleName","generateParamsList","prefix","output","concat","push","serializeParams","encoded","encodeURIComponent","join","json","headers","Content-Type","body","url","JSON","stringify","form","FormData","append","Ajax","urlGenerator","loaderPromise","registerTableOption","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxURL","setUrl","setDefaultConfig","ajaxConfig","registerTableFunction","getUrl","requestDataCheck","requestParams","requestData","ajaxParams","call","previousData","generateConfig","sendRequest","defaultConfig","method","ajaxRequesting","then","ajaxResponse","Promise","reject","keys","length","toLowerCase","includes","contentType","resolve","ajaxContentType","Accept","mode","location","origin","credentials","fetch","response","ok","catch","error","status","statusText","defaultContentTypeFormatters","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboard","clipboardCopyRowRange","element","addEventListener","e","plain","html","preventDefault","clipboardCopyFormatter","export","generateExportList","clipboardCopyConfig","clipboardCopyStyled","genereateHTMLTable","generatePlainContent","clipboardData","setData","originalEvent","dispatchExternal","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","checkPaseOrigin","getPasteData","modExists","mutateData","mutator","valid","target","tagName","edit","currentCell","getData","replace","update","updateOrAddData","insert","addData","headerFindSuccess","columnMap","split","find","title","trim","field","columnsByIndex","shift","CalcComponent","_row","Proxy","get","receiver","handle","transform","getElement","cells","getCells","cell","getCell","CellComponent","_cell","getValue","getOldValue","initialValue","getField","mutate","setValue","setValueActual","checkHeight","Cell","oldValue","height","width","minWidth","loaded","build","generateElement","setWidth","_configureCell","createElement","className","setAttribute","style","textAlign","hozAlign","vertAlign","display","alignItems","bottom","middle","justifyContent","right","center","cssClass","classList","add","tooltipGenerationMode","_generateTooltip","visible","hide","val","innerHTML","Node","firstChild","removeChild","appendChild","tooltip","containerOnly","layoutElement","setValueProcessData","cellRendered","cellEdited","subscribedExternal","changed","_generateContents","widthStyled","minWidthStyled","maxWidth","maxWidthStyled","reinitializeHeight","heightStyled","redrawBlock","parentNode","deleteCell","calcs","getCellIndex","ColumnComponent","_column","getDefinition","getTitleDownload","isGroup","show","delete","parent","Column","scrollToColumn","to","after","toColumn","findColumn","moveColumn","nextCol","nextColumn","prevCol","prevColumn","updates","updateDefinition","getWidth","result","reinitializeWidth","renderer","rerenderColumns","maxInitialWidth","variableHeight","headerTooltip","headerVertical","headerHozAlign","editableTitle","def","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleDownload","titleFormatterRendered","mapDefinitions","setField","widthFixed","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","bindModuleColumns","defaults","columnDefaults","generate","defaultOptionList","indexOf","nestedFieldSeparator","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","langBind","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","setTooltip","dblTap","tapHold","tap","headerClick","headerDblClick","headerContext","passive","headerTap","clearTimeout","headerDblTap","setTimeout","headerTapHold","setMinWidth","parseInt","setMaxWidth","_buildColumnHeaderTitle","contents","structure","dataObj","paddingTop","colDefs","childWidth","heightInitialized","index","setTo","force","active","manualHeight","outerHeight","initialized","created","maxHeight","tempData","updatedData","findCell","moveRowActual","blockRedraw","detatchModules","values","topCalcs","botCalcs","genColumn","topElement","botElement","topRow","botRow","topInitialized","initializeColumnCheck","tableRedraw","recalcRowGroup","recalcAll","groupBy","columnCalcs","topCalcParams","botCalcParams","calculations","botInitialized","generateRow","group","updateData","dataTreeChildColumnCalcs","children","pos","format","formatter","paramKey","results","subGroups","getSubGroups","subGroupResults","groupObj","ColumnCalcs","indent","collapseEl","expandEl","branchEl","registerComponentFunction","expandRow","dataTreeChildField","dummyEl","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","rowDelete","layoutRow","childArray","dataTree","open","controlEl","child","cloneNode","stopPropagation","oldControl","create","allChildren","childData","childRow","collapseRow","Row","initializeRow","defaultDownloaders","csv","setFileContents","fileContents","depth","jsonLines","pdf","header","autoTableParams","fontStyle","fontSize","cellPadding","fillColor","jsPDFParams","content","colSpan","rowSpan","doc","head","xlsx","sheetName","workbook","utils","tableFeatures","generateSheet","merges","worksheet","SheetNames","sheet","buf","s","Uint8Array","download","downloadFunc","triggerDownload","interceptCallback","groupHeader","blob","Blob","navigator","maskInput","maskLetter","maskLetterChar","maskNumber","symbol","char","isNaN","Download","onRendered","input","editorParams","padding","elementAttributes","cellValue","cancel","vertNav","String","boxSizing","onChange","removeEventListener","blurFunc","cellEl","initialDisplayValue","listEl","multiselect","dataItems","currentItem","displayItems","currentItems","blurable","blockListShow","searchWordTimeout","self","getColumnByField","label","itemParams","displayList","dataList","sortValuesList","toggleItem","splice","unsetItem","fillInput","hideList","cancelItem","len","unsetItems","chooseItems","keyCode","stopImmediatePropagation","setCurrentItem","searchWord","parseItems","getUniqueColumnValues","elOffset","showList","autocomplete","uniqueColumnValues","sort","filterList","matches","addNotice","fillListIfNotEmpty","items","clearList","searchEl","notice","fillList","intialLoad","success","chooseItem","genUniqueColumnValues","star","maxStars","size","stars","starChange","nextStar","starsHolder","whiteSpace","verticalAlign","getAttribute","progress","max","min","percent","bar","calcVal","position","backgroundColor","mouseDrag","mouseDragWidth","updateValue","tristate","indetermState","indetermValue","browser","mouseClick","recursionBlock","editedCells","editors","navigatePrev","navigateNext","keybindingNavigateNext","newRow","addRow","nextCell","prevRow","nextRow","allowEdit","elVisible","prevCell","editor","clearEditor","button","forceEdit","getRenderMode","bottomEdge","rowEl","rightEdge","leftEdge","renderHorizontal","scrollLeft","rendered","cancelEdit","invalidEdit","focusCellNoEvent","editIndex","Edit","defaultEditors","ExportRow","ExportColumn","colVisProp","cloneTableStyle","getDisplayRows","groupData","maxDepth","exportRows","headerDepth","headerEl","bodyEl","styles","setup","rowFormatter","oddRow","querySelector","evenRow","calcRow","styleCells","getElementsByClassName","mapElementStyles","treeElementField","holder","genereateTableElement","background-color","color","font-weight","font-family","font-size","text-align","border-top","border-left","border-right","border-bottom","padding-top","padding-left","padding-right","getComputedStyle","Export","filterParams","rowVal","filterVal","headerFilterColumns","prevHeaderFilterChangeCheck","tableInitialized","userSetFilter","userSetHeaderFilterFocus","userRemoveFilter","initialHeaderFilter","getHeaderFilterValue","filterChangeCheck","filter","prevSuccess","Filter","filterFunc","attrType","filterElement","getColumn","normalizeHeight","typingTimer","headerFilterLiveFilterDelay","headerFilter","editorElement","filterMode","ajax","headerFilters","activeRows","getFilters","plaintext","textarea","money","number","sign","decimalSym","thousandSym","negativeSign","integer","link","urlPrefix","formatterParams","image","tickCross","empty","tick","tickElement","datetime","DT","inputFormat","shiftTimezone","toFormat","invalid","datetimediff","invalidPlaceholder","suffix","unit","newDatetime","lookup","Math","traffic","percentValue","round","colors","floor","legend","legendColor","barEl","barContainer","legendEl","legendAlign","holderEl","buttonTick","buttonCross","rownum","checkbox","selectRow","Format","formatters","entityMap","&","<",">","\"","'","/","leftColumns","rightColumns","leftMargin","rightMargin","rightPadding","initializationMode","scrollEndTimer","layoutCell","scrollHorizontal","groups","leftParents","headersElement","frozen","margin","parentEl","allCells","layoutCalcRows","paddingLeft","FrozenColumns","refreshData","FrozenRows","GroupComponent","_group","Group","groupManager","level","hasSubGroups","old","groupList","generator","elementContents","createElements","createValueGroups","arrow","groupKey","groupID","toIndex","generateGroupHeaderContents","marginLeft","noCalc","_visSet","remove","getHeadersAndRows","prev","compoment","groupIDLookups","startOpen","headerGenerator","displayHandler","userGetGroupedData","configureGroupSetup","wipe","rowMoving","groupStartOpen","prevValue","groupRows","moveRowInArray","prevDisplayRow","from","generateGroups","updateGroupRows","groupComponents","headerContent","groupListData","oldGroups","oldRowGroup","groupId","GroupRows","cellUpdated","rowMoved","clear","getRowPosition","history","History","oldRow","rowAdd","deleteActual","_rebindRow","rowMove","hasIndex","_extractOptions","fieldIndex","HtmlTableImport","inQuote","importFormat","importer","extension","pickFile","importData","onerror","parsedData","Import","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellClick","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerMouseEnter","headerMouseLeave","headerMouseMove","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","subscribers","touchSubscribers","touchWatchers","tapDbl","added","eventMap","subscribeTouchEvents","subscriptionChanged","watchers","callback","Interaction","Keybindings","watchKeys","pressedKeys","mergedBindings","actions","bindings","meta","binding","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","undo","scrollToRow","focus","Menu","menuElements","escEvent","positionReversedX","currentComponent","columnSubscribers","menuContainer","checkMenuContainerIsParent","rowClickMenu","headerContextMenu","initializeColumnHeaderMenu","contextMenu","headerMenu","menu","isOpen","hideMenu","itemEl","hideOldSubMenus","x","y","MoveColumns","placeholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","startX","autoScrollMargin","autoScrollTimeout","touches","colEl","nextColWidthLast","prevColWidth","startXMove","moveToCol","nextColWidth","headerElement","pageX","clientHeight","toColAfter","_unbindMouseMove","xPos","MoveRows","toRow","toRowAfter","hasHandle","moveHover","endMove","tableRowDropEvent","touchMove","connection","connectionSelectorsTables","connectionElements","connections","connectedTable","connectedRow","movableRowsConnectedTables","connectionSelectorsElements","mousemove","insertBefore","nextSibling","moveRow","tableRowDrop","pageY","which","rowHandle","nextRowHeight","diff","startYMove","moveToRow","nextRowHeightLast","setStartPosition","scrollTop","yPos","connectionTables","commsConnections","prototype","fromRow","Mutator","enabled","ofEl","showingEl","rowsEl","totalRows","valueEl","totalEl","Page","progressiveLoad","pageCounterElement","page","count","displayIndex","initialLoad","dataChanging","pageSizes","setMaxPage","calculatePageSizes","registerDisplayHandler","initializePageCounter","remotePageParams","dispRows","paginationSize","testElRow","testElCell","setPageToRow","firstBut","nextBut","paginationSizeSelector","pageCounter","pageSelectLabel","prevBut","setPage","previousPage","nextPage","paginationElement","pageSizeSelect","lastBut","rowCount","currentRow","rightSize","disabled","end","_setPageButtons","actualStartRow","cookie","cookiePos","localStorage","expireDate","setDate","Persistence","id","defWatcherBlock","persistence","readers","readFunc","persistenceWriterFunc","retreiveData","retreivedData","sorters","initialSort","props","mergeDefinition","current","oldCols","parseColumns","validateSorters","writeFunc","definitions","defStore","moduleInitOrder","defaultReaders","Print","manualBlock","scrollY","tableEl","printHeader","footerContent","scrollX","ReactiveData","origFuncs","currentVersion","version","defineProperty","pop","childField","configurable","apply","getOwnPropertyDescriptor","ResizeColumns","prevHandle","_mouseDown","nearestColumn","colIndex","rtl","mouseUp","startColumn","ResizeRows","handleDown","observer","autoResize","containerHeight","containerWidth","tableHeight","browserMobile","ResizeTable","ResponsiveLayout","hiddenColumns","collapseStartOpen","responsiveLayout","collapseHandleColumn","generateCollapsedRowContent","colCount","working","titleHighlight","text","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","toggleRow","shiftKey","rowIdx","fromRowIdx","deselectRows","toggledRows","_rowSelectionChanged","_selectRow","rowInfo","selectedRows","dir","emptyAlign","decimalSeparator","thousandSeparator","a","b","string","langLocale","datetime$1","boolean","d","c","calc","alignEmptyValues","aRow","bs","as","rd","b1","sortList","tableBuilt","setSort","sorter","startingDir","columnHeaderSortMulti","rowComponents","sortMode","sortObj","_sortItems","el1Comp","el2","Sort","Number","isFinite","float","parameters","ends","Validate","clearValidation","_buildValidator","validators","validate","invalidIndex","invalidCells","ResizeTableModule","ResponsiveLayoutModule","SelectRowModule","ValidateModule","ifVisible","rowIndex","elementVertical","VirtualDomHorizontal","rightCol","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","visibleRows","isFitData","scroll","cols","colPos","reinitChanged","change","layoutRefresh","removeColRight","fitDataColActualWidthCheck","changes","widthDiff","newWidth","ColumnManager","blockHozScrollEvent","renderClass","renderers","redraw","nextToColumn","parentIndex","nextEl","minHeight","verticalAlignHeaders","updateRows","fromIndex","adjust","offsetLeft","scrollHeight","reinitialize","BaiscVertical","VirtualDomVertical","vDomRowHeight","vDomTop","vDomScrollPosBottom","vDomBottomPad","paddingBottom","topOffset","deinitializeHeight","_addBottomRow","bottomDiff","topPad","heightOccupied","vDomWindowBuffer","fillableSpace","getHeight","vDomScrollPosTop","removableRows","vDomBottom","RowManager","tableElement","heightFixer","placeholder","placeholderContents","firstRender","renderMode","displayRows","displayRowsCount","rowNumColumn","initializePlaceholder","initializeRenderer","_positionPlaceholder","activeIndex","displayRowIterator","regenerateRowNumbers","_clearPlaceholder","setActiveRows","findRowIndex","getRows","skipStage","stage","renderColumns","dataPipeline","displayPipeline","basic","fixedHeight","_clearTable","renderEmptyScroll","_showPlaceholder","otherHeight","redrawBlockRestoreConfig","renderTable","containerElement","links","InteractionManager","tabulator-cell","subscriber","listenerMap","components","pseudoTrackers","pseudoMouseLeave","linkedKeys","listeners","listener","targets","previousTargets","funcName","msgElement","dataLoaderLoading","template","loadingElement","requestOrder","errorElement","debug","subscriptionNotifiers","args","events","_notifiySubscriptionChange","confirmed","notifiers","_confirm","TableRegistry","lastCol","flexGrowUnits","remainingSpace","changeUnits","calcShrink","remainingFlexGrowUnits","shrinkCols","oversizeCols","oversizeSpace","freeSpace","fixedWidth","fixedShrinkColumns","flexColWidth","flexColumns","Layout","Localize","lang","_setLangProp","langList","desiredLocale","locale","path","trans","root","rootPath","loading","page_size","next","next_title","all","Comms","con","coreModules","tabulator","registerModule","query","orderedMods","moduleBindings","moduleCore","Tabulator","footerManager","vdomHoz","interactionMonitor","originalElement","ComponentFunctionBinder","bindModules","initialize","_loadInitialData","attributes","setColumns","parse","responses","findRow","foundRows","plugin","debugEventsInternal","debugInvalidOptions","autoColumns","addRowPos","headerVisible","renderVerticalBuffer","scrollToRowPosition","scrollToColumnIfVisible","rowFormatterPrint","rowFormatterHtmlOutput","dataLoaderError","ModuleBinder"],"mappings":"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"} \ No newline at end of file +{"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/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/plaintext.js","../../src/js/modules/Format/defaults/formatters.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/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/defaults/undoers.js","../../src/js/modules/History/History.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/Import/defaults/importers/csv.js","../../src/js/modules/Import/Import.js","../../src/js/modules/Import/defaults/importers/json.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/Keybindings/defaults/actions.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/Page.js","../../src/js/modules/Page/defaults/pageCounters/pages.js","../../src/js/modules/Page/defaults/pageCounters.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/date.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/Sort.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/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/TableRegistry.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/defaults/modes.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/row/PseudoRow.js"],"sourcesContent":["export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key){\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn clone;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class Popup extends CoreFeature{\r\n constructor(table, element, parent){\r\n super(table);\r\n \r\n this.element = element;\r\n this.container = this._lookupContainer();\r\n \r\n this.parent = parent;\r\n \r\n this.reversedX = false;\r\n this.childPopup = null;\r\n this.blurable = false;\r\n this.blurCallback = null;\r\n this.renderedCallback = null;\r\n \r\n this.visible = false;\r\n \r\n this.element.classList.add(\"tabulator-popup-container\");\r\n \r\n this.blurEvent = this.hide.bind(this, false);\r\n this.escEvent = this._escapeCheck.bind(this);\r\n }\r\n \r\n _lookupContainer(){\r\n var container = this.table.options.popupContainer;\r\n \r\n if(typeof container === \"string\"){\r\n container = document.querySelector(container);\r\n \r\n if(!container){\r\n console.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\r\n }\r\n }else if (container === true){\r\n container = this.table.element;\r\n }\r\n \r\n if(container && !this._checkContainerIsParent(container)){\r\n container = false;\r\n console.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\r\n }\r\n \r\n if(!container){\r\n container = document.body;\r\n }\r\n \r\n return container;\r\n }\r\n \r\n _checkContainerIsParent(container, element = this.table.element){\r\n if(container === element){\r\n return true;\r\n }else{\r\n return element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\r\n }\r\n }\r\n \r\n renderCallback(callback){\r\n this.renderedCallback = callback;\r\n }\r\n \r\n containerEventCoords(e){\r\n var touch = !(e instanceof MouseEvent);\r\n \r\n var x = touch ? e.touches[0].pageX : e.pageX;\r\n var y = touch ? e.touches[0].pageY : e.pageY;\r\n \r\n if(this.container !== document.body){\r\n let parentOffset = Helpers.elOffset(this.container);\r\n \r\n x -= parentOffset.left;\r\n y -= parentOffset.top;\r\n }\r\n \r\n return {x, y};\r\n }\r\n \r\n elementPositionCoords(element, position = \"right\"){\r\n var offset = Helpers.elOffset(element),\r\n containerOffset, x, y;\r\n \r\n if(this.container !== document.body){\r\n containerOffset = Helpers.elOffset(this.container);\r\n \r\n offset.left -= containerOffset.left;\r\n offset.top -= containerOffset.top;\r\n }\r\n \r\n switch(position){\r\n case \"right\":\r\n x = offset.left + element.offsetWidth;\r\n y = offset.top - 1;\r\n break;\r\n \r\n case \"bottom\":\r\n x = offset.left;\r\n y = offset.top + element.offsetHeight;\r\n break;\r\n }\r\n \r\n return {x, y, offset};\r\n }\r\n \r\n show(origin, position){\r\n var x, y, parentEl, parentOffset, containerOffset, coords;\r\n \r\n if(origin instanceof HTMLElement){\r\n parentEl = origin;\r\n coords = this.elementPositionCoords(origin, position);\r\n \r\n parentOffset = coords.offset;\r\n x = coords.x;\r\n y = coords.y;\r\n \r\n }else if(typeof origin === \"number\"){\r\n parentOffset = {top:0, left:0};\r\n x = origin;\r\n y = position;\r\n }else{\r\n coords = this.containerEventCoords(origin);\r\n \r\n x = coords.x;\r\n y = coords.y;\r\n \r\n this.reversedX = false;\r\n }\r\n \r\n this.element.style.top = y + \"px\";\r\n this.element.style.left = x + \"px\";\r\n \r\n this.container.appendChild(this.element);\r\n \r\n if(typeof this.renderedCallback === \"function\"){\r\n this.renderedCallback();\r\n }\r\n \r\n this._fitToScreen(x, y, parentEl, parentOffset, position);\r\n \r\n this.visible = true;\r\n \r\n return this;\r\n }\r\n \r\n _fitToScreen(x, y, parentEl, parentOffset, position){\r\n var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\r\n\r\n //move menu to start on right edge if it is too close to the edge of the screen\r\n if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\r\n this.element.style.left = \"\";\r\n \r\n if(parentEl){\r\n this.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\r\n }else{\r\n this.element.style.right = (this.container.offsetWidth - x) + \"px\";\r\n }\r\n \r\n this.reversedX = true;\r\n }\r\n\r\n //move menu to start on bottom edge if it is too close to the edge of the screen\r\n if((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\r\n if(parentEl){\r\n switch(position){\r\n case \"bottom\":\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\r\n break;\r\n\r\n default:\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\r\n }\r\n \r\n }else{\r\n this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\r\n }\r\n }\r\n }\r\n \r\n isVisible(){\r\n return this.visible;\r\n }\r\n \r\n hideOnBlur(callback){\r\n this.blurable = true;\r\n \r\n if(this.visible){\r\n setTimeout(() => {\r\n this.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n this.subscribe(\"cell-editing\", this.blurEvent);\r\n document.body.addEventListener(\"click\", this.blurEvent);\r\n document.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n window.addEventListener(\"resize\", this.blurEvent);\r\n document.body.addEventListener(\"keydown\", this.escEvent);\r\n }, 100);\r\n \r\n this.blurCallback = callback;\r\n }\r\n \r\n return this;\r\n }\r\n \r\n _escapeCheck(e){\r\n if(e.keyCode == 27){\r\n this.hide();\r\n }\r\n }\r\n \r\n hide(silent = false){\r\n if(this.visible){\r\n if(this.blurable){\r\n document.body.removeEventListener(\"keydown\", this.escEvent);\r\n document.body.removeEventListener(\"click\", this.blurEvent);\r\n document.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n window.removeEventListener(\"resize\", this.blurEvent);\r\n this.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n this.unsubscribe(\"cell-editing\", this.blurEvent);\r\n }\r\n \r\n if(this.childPopup){\r\n this.childPopup.hide();\r\n }\r\n \r\n if(this.parent){\r\n this.parent.childPopup = null;\r\n }\r\n \r\n if(this.element.parentNode){\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n\r\n this.visible = false;\r\n\r\n if(this.blurCallback && !silent){\r\n this.blurCallback();\r\n }\r\n }\r\n \r\n return this;\r\n }\r\n \r\n child(element){\r\n if(this.childPopup){\r\n this.childPopup.hide();\r\n }\r\n \r\n this.childPopup = new Popup(this.table, element, this);\r\n \r\n return this.childPopup;\r\n }\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Popup from './tools/Popup.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registration ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = (...args) => {\r\n\t\t\t\tthis.table.initGuard(name);\r\n\r\n\t\t\t\treturn func(...args);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Footer Management ////////\r\n\t///////////////////////////////////\r\n\r\n\tfooterAppend(element){\r\n\t\treturn this.table.footerManager.append(element)\r\n\t}\r\n\r\n\tfooterPrepend(element){\r\n\t\treturn this.table.footerManager.prepend(element)\r\n\t}\r\n\r\n\tfooterRemove(element){\r\n\t\treturn this.table.footerManager.remove(element)\r\n\t} \r\n\r\n\t///////////////////////////////////\r\n\t//////// Popups Management ////////\r\n\t///////////////////////////////////\r\n\t\r\n\tpopup(menuEl, menuContainer){\r\n\t\treturn new Popup(this.table, menuEl, menuContainer);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Alert Management ////////\r\n\t///////////////////////////////////\r\n\r\n\talert(content, type){\r\n\t\treturn this.table.alertManager.alert(content, type);\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\treturn this.table.alertManager.clear();\r\n\t}\r\n\t\r\n}\r\n\r\nexport default Module;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {}","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nexport default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\r\n\t\t\tvar output = generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.config = {}; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\t\t\r\n\t\tthis.loaderPromise = false;\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\t\t\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\t\t\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\t\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\t\t\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\r\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\t\r\n\trequestParams(data, config, silent, params){\r\n\t\tvar ajaxParams = this.table.options.ajaxParams;\r\n\t\t\r\n\t\tif(ajaxParams){\r\n\t\t\tif(typeof ajaxParams === \"function\"){\r\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tparams = Object.assign(params, ajaxParams);\r\n\t\t}\t\t\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\t\r\n\trequestData(url, params, config, silent, previousData){\r\n\t\tvar ajaxConfig;\r\n\t\t\r\n\t\tif(!previousData && this.requestDataCheck(url)){\r\n\t\t\tif(url){\r\n\t\t\t\tthis.setUrl(url);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tajaxConfig = this.generateConfig(config);\r\n\t\t\t\r\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetDefaultConfig(config = {}){\r\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(this.config, config);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//load config object\r\n\tgenerateConfig(config = {}){\r\n\t\tvar ajaxConfig = Object.assign({}, this.config)\r\n\t\t\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tajaxConfig.method = config;\r\n\t\t}else{\r\n\t\t\tObject.assign(ajaxConfig, config);\r\n\t\t}\r\n\t\t\r\n\t\treturn ajaxConfig;\r\n\t}\r\n\t\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\t\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\t\r\n\t//send ajax request\r\n\tsendRequest(url, params, config){\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\r\n\t\t\treturn this.loaderPromise(url, config, params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\tmethod: \"GET\",\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate, force){\r\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tif(this.column.definition.cellEdited){\r\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate, force){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value !== value || force){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\r\n\t\tthis.dispatch(\"cell-height\", this, \"\");\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\r\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import Column from './Column.js';\r\n\r\n//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this._column.getTitleDownload();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"maxInitialWidth\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleDownload = null;\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.maxInitialWidth = null;\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif (def.maxInitialWidth) {\r\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\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);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\r\n\t\t\tcolumn.columnRendered();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\r\n\t\tthis.dispatch(\"column-height\", this, \"\");\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tgetTitleDownload() {\r\n\t\treturn this.titleDownload;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-rendered\", this);\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\t// maxInitialWidth ignored here as width specified\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData(force);\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(force){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tvar setTo = maxWidth + 1;\r\n\t\t\t\tif (this.maxInitialWidth && !force) {\r\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\r\n\t\t\t\t}\r\n\t\t\t\tthis.setWidthActual(setTo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\t\t\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //hold elements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.created = false;\r\n\t\t\r\n\t\tthis.setData(data);\r\n\t}\r\n\t\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\t\t\r\n\t\tthis.element = el;\r\n\t}\r\n\t\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\t\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\t\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\t\t\r\n\t\tif(!this.initialized || force){\r\n\t\t\t\r\n\t\t\tthis.deleteCells();\r\n\t\t\t\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\t\t\t\r\n\t\t\tthis.generateCells();\r\n\t\t\t\r\n\t\t\tthis.initialized = true;\r\n\t\t\t\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\t\t\t\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\t\t\t\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t\t\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\t}\r\n\t\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\t\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\t\t\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\t\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight;\r\n\t\t\r\n\t\tif(this.table.options.rowHeight){\r\n\t\t\tthis.height = this.table.options.rowHeight;\r\n\t\t}else{\r\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\t\t\t\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tvar height = cell.getHeight();\r\n\t\t\t\tif(height > maxHeight){\r\n\t\t\t\t\tmaxHeight = height;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(force){\r\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t\t}else{\r\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\t\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\t\t\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\t\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\t\tif(force && !this.table.options.rowHeight){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\t\t\r\n\t\tthis.calcHeight(force);\r\n\t\t\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\t\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\t\t\t\r\n\t\t\tthis.manualHeight = true;\r\n\t\t\t\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\t\t\t\r\n\t\t\tthis.setCellHeight();\r\n\t\t\t\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\t\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\t\t\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\t\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\t\t\t\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\t\t\t\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\t\t\t\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\t\t\t\t\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\t\t\t\t\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\t\t\t\r\n\t\t\t//this.reinitialize();\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\t\t\t\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.data;\r\n\t}\r\n\t\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\t\t\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\t\t\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\t\t\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\t\t\r\n\t\treturn this.cells;\r\n\t}\r\n\t\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\t\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\t\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\t\t\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\t\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\t\t\r\n\t\tthis.deleteActual();\r\n\t\t\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\t\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\t\t\r\n\t\tthis.detatchModules();\r\n\t\t\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\t\t\r\n\t\tthis.deleteCells();\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\t\t\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\t\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\t\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\t\t\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\t\t\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\t\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tif(this.topRow){\r\n\t\t\trows.unshift(this.topRow);\r\n\t\t}\r\n\r\n\t\tif(this.botRow){\r\n\t\t\trows.push(this.botRow);\r\n\t\t}\r\n\t\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRowsRefresh(){\r\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\r\n\t\t\tthis.recalcAll();\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.footerRemove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.footerPrepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(row);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeElementField(){\r\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\r\n\r\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\t}\r\n\t\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tvar field = cell.column.getField();\r\n\r\n\t\tif(field === this.elementField){\r\n\t\t\tthis.layoutRow(cell.row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowExpanded(row){\r\n\t\treturn row.modules.dataTree.open;\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\nimport jsonLines from './downloaders/jsonLines.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tjsonLines:jsonLines,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function (list, options, setFileContents) {\r\n\tconst fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tconst item = {};\r\n\r\n\t\tswitch (row.type) {\r\n\t\t\tcase \"header\":\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\t\tif (col) {\r\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tfileContents.push(JSON.stringify(item));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\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 }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\r\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}});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import maskInput from './inputMask.js';\r\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\r\n\r\nexport default class Edit{\r\n constructor(editor, cell, onRendered, success, cancel, editorParams){\r\n this.edit = editor;\r\n this.table = editor.table;\r\n this.cell = cell;\r\n this.params = this._initializeParams(editorParams);\r\n \r\n this.data = [];\r\n this.displayItems = [];\r\n this.currentItems = [];\r\n this.focusedItem = null;\r\n \r\n this.input = this._createInputElement();\r\n this.listEl = this._createListElement();\r\n \r\n this.initialValues = null; \r\n \r\n this.isFilter = !cell._getSelf;\r\n \r\n this.filterTimeout = null;\r\n this.filtered = false;\r\n this.typing = false;\r\n \r\n this.values = []; \r\n this.popup = null; \r\n \r\n this.listIteration = 0;\r\n \r\n this.blurable = true;\r\n \r\n this.actions = {\r\n success:success,\r\n cancel:cancel\r\n }\r\n \r\n this._deprecationCheck();\r\n this._initializeValue();\r\n \r\n onRendered(this._onRendered.bind(this));\r\n }\r\n \r\n _deprecationCheck(){\r\n if(this.params.listItemFormatter){\r\n console.warn(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.sortValuesList){\r\n console.warn(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.searchFunc){\r\n console.warn(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n \r\n if(this.params.searchingPlaceholder){\r\n console.warn(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\r\n }\r\n }\r\n \r\n _initializeValue(){\r\n var initialValue = this.cell.getValue();\r\n \r\n if(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\r\n initialValue = this.params.defaultValue;\r\n }\r\n \r\n this.initialValues = this.params.multiselect ? initialValue : [initialValue];\r\n \r\n if(this.isFilter){\r\n this.input.value = this.initialValues.join(\",\");\r\n this.headerFilterInitialListGen(); \r\n }\r\n }\r\n \r\n _onRendered(){\r\n var cellEl = this.cell.getElement();\r\n \r\n function clickStop(e){\r\n e.stopPropagation();\r\n }\r\n \r\n this.input.style.height = \"100%\";\r\n this.input.focus({preventScroll: true});\r\n \r\n \r\n cellEl.addEventListener(\"click\", clickStop);\r\n \r\n setTimeout(() => {\r\n cellEl.removeEventListener(\"click\", clickStop);\r\n }, 1000)\r\n }\r\n \r\n _createListElement(){\r\n var listEl = document.createElement(\"div\");\r\n listEl.classList.add(\"tabulator-edit-list\");\r\n \r\n listEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\r\n listEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this))\r\n \r\n return listEl;\r\n }\r\n \r\n _setListWidth(){\r\n var element = this.isFilter ? this.input : this.cell.getElement();\r\n \r\n this.listEl.style.minWidth = element.offsetWidth + \"px\";\r\n \r\n if(this.params.maxWidth){\r\n if(this.params.maxWidth === true){\r\n this.listEl.style.maxWidth = element.offsetWidth + \"px\";\r\n }else if(typeof this.params.maxWidth === \"number\"){\r\n this.listEl.style.maxWidth = this.params.maxWidth + \"px\";\r\n }else{\r\n this.listEl.style.maxWidth = this.params.maxWidth;\r\n }\r\n }\r\n \r\n }\r\n \r\n _createInputElement(){\r\n var attribs = this.params.elementAttributes;\r\n var input = document.createElement(\"input\");\r\n \r\n input.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\r\n \r\n input.style.padding = \"4px\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n \r\n if(!this.params.autocomplete){\r\n input.style.cursor = \"default\";\r\n input.style.caretColor = \"transparent\";\r\n // input.readOnly = (this.edit.currentCell != false);\r\n }\r\n \r\n if(attribs && typeof attribs == \"object\"){\r\n for (let key in attribs){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + attribs[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, attribs[key]);\r\n }\r\n }\r\n }\r\n \r\n if(this.params.mask){\r\n maskInput(input, this.params);\r\n }\r\n \r\n this._bindInputEvents(input);\r\n \r\n return input;\r\n }\r\n \r\n _initializeParams(params){\r\n var valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\r\n valueCheck;\r\n\r\n params = Object.assign({}, params);\r\n \r\n params.verticalNavigation = params.verticalNavigation || \"editor\";\r\n params.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\r\n params.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\r\n params.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\r\n \r\n params.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\r\n\r\n valueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\r\n\r\n if(!valueCheck){\r\n console.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\")\r\n }else if(valueCheck > 1){\r\n console.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\")\r\n }\r\n \r\n if(params.autocomplete){\r\n if(params.multiselect){\r\n params.multiselect = false;\r\n console.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\")\r\n }\r\n }else{\r\n if(params.freetext){\r\n params.freetext = false;\r\n console.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.filterFunc){\r\n params.filterFunc = false;\r\n console.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.filterRemote){\r\n params.filterRemote = false;\r\n console.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.mask){\r\n params.mask = false;\r\n console.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.allowEmpty){\r\n params.allowEmpty = false;\r\n console.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\r\n }\r\n \r\n if(params.listOnEmpty){\r\n params.listOnEmpty = false;\r\n console.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\r\n }\r\n }\r\n \r\n if(params.filterRemote && !(typeof params.valuesLookup === \"function\" || typeof params.valuesURL)){\r\n params.filterRemote = false;\r\n console.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\r\n }\r\n return params;\r\n }\r\n //////////////////////////////////////\r\n ////////// Event Handling ////////////\r\n //////////////////////////////////////\r\n \r\n _bindInputEvents(input){\r\n input.addEventListener(\"focus\", this._inputFocus.bind(this))\r\n input.addEventListener(\"click\", this._inputClick.bind(this))\r\n input.addEventListener(\"blur\", this._inputBlur.bind(this))\r\n input.addEventListener(\"keydown\", this._inputKeyDown.bind(this))\r\n input.addEventListener(\"search\", this._inputSearch.bind(this))\r\n \r\n if(this.params.autocomplete){\r\n input.addEventListener(\"keyup\", this._inputKeyUp.bind(this))\r\n }\r\n }\r\n \r\n \r\n _inputFocus(e){\r\n this.rebuildOptionsList();\r\n }\r\n \r\n _filter(){\r\n if(this.params.filterRemote){\r\n clearTimeout(this.filterTimeout);\r\n \r\n this.filterTimeout = setTimeout(() => {\r\n this.rebuildOptionsList();\r\n }, this.params.filterDelay);\r\n }else{\r\n this._filterList();\r\n }\r\n }\r\n \r\n _inputClick(e){\r\n e.stopPropagation();\r\n }\r\n \r\n _inputBlur(e){\r\n if(this.blurable && this.popup){\r\n this.popup.hide();\r\n }\r\n }\r\n \r\n _inputSearch(){\r\n this._clearChoices();\r\n }\r\n \r\n _inputKeyDown(e){\r\n switch(e.keyCode){\r\n \r\n case 38: //up arrow\r\n this._keyUp(e);\r\n break\r\n \r\n case 40: //down arrow\r\n this._keyDown(e);\r\n break;\r\n \r\n case 37: //left arrow\r\n case 39: //right arrow\r\n this._keySide(e);\r\n break;\r\n \r\n case 13: //enter\r\n this._keyEnter();\r\n break;\r\n \r\n case 27: //escape\r\n this._keyEsc();\r\n break;\r\n \r\n case 36: //home\r\n case 35: //end\r\n this._keyHomeEnd(e);\r\n break;\r\n \r\n case 9: //tab\r\n break;\r\n \r\n default:\r\n this._keySelectLetter(e);\r\n }\r\n }\r\n \r\n _inputKeyUp(e){\r\n switch(e.keyCode){\r\n case 38: //up arrow\r\n case 37: //left arrow\r\n case 39: //up arrow\r\n case 40: //right arrow\r\n case 13: //enter\r\n case 27: //escape\r\n break;\r\n \r\n default:\r\n this._keyAutoCompLetter(e);\r\n }\r\n }\r\n \r\n _preventBlur(){\r\n this.blurable = false;\r\n \r\n setTimeout(function(){\r\n this.blurable = true;\r\n }, 10);\r\n }\r\n \r\n //////////////////////////////////////\r\n //////// Keyboard Navigation /////////\r\n //////////////////////////////////////\r\n \r\n _keyUp(e){\r\n var index = this.displayItems.indexOf(this.focusedItem);\r\n \r\n if(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n \r\n if(index > 0){\r\n this._focusItem(this.displayItems[index - 1]);\r\n }\r\n }\r\n }\r\n \r\n _keyDown(e){\r\n var index = this.displayItems.indexOf(this.focusedItem);\r\n \r\n if(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n \r\n if(index < this.displayItems.length - 1){\r\n if(index == -1){\r\n this._focusItem(this.displayItems[0]);\r\n }else{\r\n this._focusItem(this.displayItems[index + 1]);\r\n }\r\n }\r\n }\r\n }\r\n \r\n _keySide(e){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n \r\n _keyEnter(e){\r\n if(this.focusedItem){\r\n this._chooseItem(this.focusedItem);\r\n }else{\r\n this._cancel();\r\n }\r\n }\r\n \r\n _keyEsc(e){\r\n this._cancel();\r\n }\r\n \r\n _keyHomeEnd(e){\r\n if(this.params.autocomplete){\r\n //prevent table navigation while using input element\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n \r\n _keySelectLetter(e){\r\n if(!this.params.autocomplete){\r\n // if(this.edit.currentCell === false){\r\n e.preventDefault();\r\n // }\r\n \r\n if(e.keyCode >= 38 && e.keyCode <= 90){\r\n this._scrollToValue(e.keyCode);\r\n }\r\n }\r\n }\r\n \r\n _keyAutoCompLetter(e){\r\n this._filter();\r\n this.typing = true;\r\n }\r\n \r\n \r\n _scrollToValue(char){\r\n clearTimeout(this.filterTimeout);\r\n \r\n var character = String.fromCharCode(char).toLowerCase();\r\n this.filterTerm += character.toLowerCase();\r\n \r\n var match = this.displayItems.find((item) => {\r\n return typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\r\n });\r\n \r\n if(match){\r\n this._focusItem(match);\r\n }\r\n \r\n this.filterTimeout = setTimeout(() => {\r\n this.filterTerm = \"\";\r\n }, 800)\r\n }\r\n \r\n _focusItem(item){\r\n if(this.focusedItem && this.focusedItem.element){\r\n this.focusedItem.element.classList.remove(\"focused\");\r\n }\r\n \r\n this.focusedItem = item;\r\n \r\n if(item && item.element){\r\n item.element.classList.add(\"focused\");\r\n item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n }\r\n }\r\n \r\n \r\n //////////////////////////////////////\r\n /////// Data List Generation /////////\r\n //////////////////////////////////////\r\n headerFilterInitialListGen(){\r\n this._generateOptions(true);\r\n }\r\n \r\n rebuildOptionsList(){\r\n this._generateOptions()\r\n .then(this._sortOptions.bind(this))\r\n .then(this._buildList.bind(this))\r\n .then(this._showList.bind(this))\r\n .catch((e) => {\r\n if(!Number.isInteger(e)){\r\n console.error(\"List generation error\", e);\r\n }\r\n })\r\n }\r\n \r\n _filterList(){\r\n this._buildList(this._filterOptions());\r\n this._showList();\r\n }\r\n \r\n _generateOptions(silent){\r\n var values = [];\r\n var itteration = ++ this.listIteration;\r\n \r\n this.filtered = false;\r\n \r\n if(this.params.values){\r\n values = this.params.values;\r\n }else if (this.params.valuesURL){\r\n values = this._ajaxRequest(this.params.valuesURL, this.input.value);\r\n }else{\r\n if(typeof this.params.valuesLookup === \"function\"){\r\n values = this.params.valuesLookup(cell, this.input.value);\r\n }else if(this.params.valuesLookup){\r\n values = this._uniqueColumnValues(this.params.valuesLookupField);\r\n }\r\n }\r\n \r\n if(values instanceof Promise){\r\n if(!silent){\r\n this._addPlaceholder(this.params.placeholderLoading);\r\n }\r\n \r\n return values.then()\r\n .then((responseValues) => {\r\n if(this.listIteration === itteration){\r\n return this._parseList(responseValues);\r\n }else{\r\n return Promise.reject(itteration);\r\n }\r\n });\r\n }else{\r\n return Promise.resolve(this._parseList(values))\r\n }\r\n }\r\n \r\n _addPlaceholder(contents){\r\n var placeholder = document.createElement(\"div\");\r\n \r\n if(typeof contents === \"function\"){\r\n contents = contents(cell.getComponent(), this.listEl);\r\n }\r\n \r\n if(contents){\r\n this._clearList();\r\n \r\n if(contents instanceof HTMLElement){\r\n placeholder = contents;\r\n }else{\r\n placeholder.classList.add(\"tabulator-edit-list-placeholder\")\r\n placeholder.innerHTML = contents;\r\n }\r\n \r\n this.listEl.appendChild(placeholder);\r\n \r\n this._showList();\r\n }\r\n }\r\n \r\n _ajaxRequest(url, term){\r\n var params = this.params.filterRemote ? {term:term} : {};\r\n url = urlBuilder(url, {}, params);\r\n \r\n return fetch(url)\r\n .then((response)=>{\r\n if(response.ok) {\r\n return response.json()\r\n .catch((error)=>{\r\n console.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\r\n return Promise.reject(error);\r\n });\r\n }else{\r\n console.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n return Promise.reject(response);\r\n }\r\n })\r\n .catch((error)=>{\r\n console.error(\"List Ajax Load Error - Connection Error: \", error);\r\n return Promise.reject(error);\r\n });\r\n }\r\n \r\n _uniqueColumnValues(field){\r\n var output = {},\r\n data = this.table.getData(this.params.valuesLookup),\r\n column;\r\n \r\n if(field){\r\n column = this.table.columnManager.getColumnByField(field);\r\n }else{\r\n column = this.cell.getColumn()._getSelf();\r\n }\r\n \r\n if(column){\r\n data.forEach((row) => {\r\n var val = column.getFieldValue(row);\r\n \r\n if(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n output[val] = true;\r\n }\r\n });\r\n }else{\r\n console.warn(\"unable to find matching column to create select lookup list:\", field);\r\n output = [];\r\n }\r\n \r\n return Object.keys(output);\r\n }\r\n \r\n \r\n _parseList(inputValues){\r\n var data = [];\r\n \r\n if(!Array.isArray(inputValues)){\r\n inputValues = Object.entries(inputValues).map(([key, value]) => {\r\n return {\r\n label:value,\r\n value:key,\r\n };\r\n });\r\n }\r\n \r\n inputValues.forEach((value) => {\r\n if(typeof value !== \"object\"){\r\n value = {\r\n label:value,\r\n value:value,\r\n };\r\n }\r\n \r\n this._parseListItem(value, data, 0);\r\n });\r\n \r\n this.data = data;\r\n \r\n return data; \r\n }\r\n \r\n _parseListItem(option, data, level){\r\n var item = {};\r\n \r\n if(option.options){\r\n item = this._parseListGroup(option, level + 1);\r\n }else{\r\n item = {\r\n label:option.label,\r\n value:option.value,\r\n itemParams:option.itemParams,\r\n elementAttributes: option.elementAttributes,\r\n element:false,\r\n selected:false,\r\n visible:true,\r\n level:level,\r\n original:option,\r\n };\r\n \r\n if(this.initialValues && this.initialValues.indexOf(option.value) > -1){\r\n this._chooseItem(item, true);\r\n }\r\n }\r\n \r\n data.push(item);\r\n }\r\n \r\n _parseListGroup(option, level){\r\n var item = {\r\n label:option.label,\r\n group:true,\r\n itemParams:option.itemParams,\r\n elementAttributes:option.elementAttributes,\r\n element:false,\r\n visible:true,\r\n level:level,\r\n options:[],\r\n original:option,\r\n };\r\n \r\n option.options.forEach((child) => {\r\n this._parseListItem(child, item.options, level);\r\n });\r\n \r\n return item;\r\n }\r\n \r\n _sortOptions(options){\r\n var sorter;\r\n \r\n if(this.params.sort){\r\n sorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\r\n \r\n this._sortGroup(sorter, options);\r\n }\r\n \r\n return options;\r\n }\r\n \r\n _sortGroup(sorter, options){\r\n options.sort((a,b) => {\r\n return sorter(a.label, b.label, a.value, b.value, a.original, b.original);\r\n });\r\n \r\n options.forEach((option) => {\r\n if(option.group){\r\n this._sortGroup(sorter, option.options);\r\n }\r\n })\r\n }\r\n \r\n _defaultSortFunction(as, bs){\r\n var a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n var emptyAlign = 0;\r\n \r\n if(this.params.sort === \"desc\"){\r\n [as, bs] = [bs, as];\r\n }\r\n \r\n //handle empty values\r\n if(!as && as!== 0){\r\n emptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n }else if(!bs && bs!== 0){\r\n emptyAlign = 1;\r\n }else{\r\n if(isFinite(as) && isFinite(bs)) return as - bs;\r\n a = String(as).toLowerCase();\r\n b = String(bs).toLowerCase();\r\n if(a === b) return 0;\r\n if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n a = a.match(rx);\r\n b = b.match(rx);\r\n L = a.length > b.length ? b.length : a.length;\r\n while(i < L){\r\n a1= a[i];\r\n b1= b[i++];\r\n if(a1 !== b1){\r\n if(isFinite(a1) && isFinite(b1)){\r\n if(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n if(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n return a1 - b1;\r\n }\r\n else return a1 > b1 ? 1 : -1;\r\n }\r\n }\r\n \r\n return a.length > b.length;\r\n }\r\n \r\n return emptyAlign;\r\n }\r\n \r\n _filterOptions(){\r\n var filterFunc = this.params.filterFunc || this._defaultFilterFunc;\r\n var term = this.input.value;\r\n var results = [];\r\n \r\n if(term){\r\n this.filtered = true;\r\n \r\n this.data.forEach((item) => {\r\n this._filterItem(filterFunc, term, item);\r\n });\r\n }else{\r\n this.filtered = false;\r\n }\r\n \r\n return this.data;\r\n }\r\n \r\n _filterItem(func, term, item){\r\n var matches = false;\r\n \r\n if(!item.group){\r\n item.visible = func(term, item.label, item.value, item.original);\r\n }else{\r\n item.options.forEach((option) => {\r\n if(this._filterItem(func, term, option)){\r\n matches = true;\r\n }\r\n });\r\n \r\n item.visible = matches;\r\n }\r\n \r\n return item.visible;\r\n }\r\n \r\n _defaultFilterFunc(term, label, value, item){\r\n var term = String(term).toLowerCase();\r\n \r\n if(label !== null || typeof label !== \"undefined\"){\r\n if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase(term).indexOf() > -1){\r\n return true;\r\n }\r\n }\r\n \r\n return false;\r\n }\r\n \r\n //////////////////////////////////////\r\n /////////// Display List /////////////\r\n //////////////////////////////////////\r\n \r\n _clearList(){\r\n while(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\r\n \r\n this.displayItems = [];\r\n }\r\n \r\n _buildList(data){\r\n this._clearList();\r\n \r\n data.forEach((option) => {\r\n this._buildItem(option);\r\n });\r\n \r\n if(!this.displayItems.length){\r\n this._addPlaceholder(this.params.placeholderEmpty);\r\n } \r\n }\r\n \r\n _buildItem(item){\r\n var el = item.element,\r\n contents;\r\n \r\n if(!this.filtered || item.visible){\r\n \r\n if(!el){\r\n el = document.createElement(\"div\");\r\n el.tabIndex = 0;\r\n \r\n contents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\r\n \r\n if(contents instanceof HTMLElement){\r\n el.appendChild(contents)\r\n }else{\r\n el.innerHTML = contents;\r\n }\r\n \r\n if(item.group){\r\n el.classList.add(\"tabulator-edit-list-group\");\r\n }else{\r\n el.classList.add(\"tabulator-edit-list-item\");\r\n }\r\n \r\n el.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\r\n \r\n if(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n for (let key in item.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n el.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n }else{\r\n el.setAttribute(key, item.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n \r\n if(item.group){\r\n el.addEventListener(\"click\", this._groupClick.bind(this, item));\r\n }else{\r\n el.addEventListener(\"click\", this._itemClick.bind(this, item));\r\n }\r\n \r\n el.addEventListener(\"mousedown\", this._preventBlur.bind(this));\r\n \r\n item.element = el;\r\n }\r\n \r\n this._styleItem(item);\r\n \r\n this.listEl.appendChild(el);\r\n \r\n if(item.group){\r\n item.options.forEach((option) => {\r\n this._buildItem(option);\r\n });\r\n }else{\r\n this.displayItems.push(item);\r\n }\r\n }\r\n }\r\n \r\n _showList(){\r\n var startVis = this.popup && this.popup.isVisible();\r\n \r\n if(this.input.parentNode){\r\n if(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\r\n if(this.popup){\r\n this.popup.hide(true);\r\n return;\r\n }\r\n }\r\n \r\n this._setListWidth();\r\n \r\n if(!this.popup){\r\n this.popup = this.edit.popup(this.listEl);\r\n }\r\n \r\n this.popup.show(this.cell.getElement(), \"bottom\")\r\n \r\n if(!startVis){\r\n this.popup.hideOnBlur(this._resolveValue.bind(this, true));\r\n }\r\n }\r\n }\r\n \r\n _styleItem(item){\r\n if(item && item.element){\r\n if(item.selected){\r\n item.element.classList.add(\"active\");\r\n }else{\r\n item.element.classList.remove(\"active\");\r\n }\r\n }\r\n }\r\n \r\n //////////////////////////////////////\r\n ///////// User Interaction ///////////\r\n //////////////////////////////////////\r\n \r\n _itemClick(item, e){\r\n e.stopPropagation();\r\n \r\n this._chooseItem(item);\r\n }\r\n \r\n _groupClick(item, e){\r\n e.stopPropagation();\r\n }\r\n \r\n \r\n //////////////////////////////////////\r\n ////// Current Item Management ///////\r\n //////////////////////////////////////\r\n \r\n _cancel(){\r\n this.popup.hide(true);\r\n this.actions.cancel();\r\n }\r\n \r\n _clearChoices(){\r\n this.typing = true;\r\n \r\n this.currentItems.forEach((item) => {\r\n item.selected = false;\r\n this._styleItem(item);\r\n });\r\n \r\n this.currentItems = [];\r\n \r\n this.focusedItem = null;\r\n }\r\n \r\n _chooseItem(item, silent){\r\n var index;\r\n \r\n this.typing = false;\r\n \r\n if(this.params.multiselect){\r\n index = this.currentItems.indexOf(item);\r\n \r\n if(index > -1){\r\n this.currentItems.splice(index, 1);\r\n item.selected = false;\r\n }else{\r\n this.currentItems.push(item);\r\n item.selected = true;\r\n }\r\n \r\n this.input.value = this.currentItems.map(item => item.label).join(\",\");\r\n \r\n this._styleItem(item);\r\n \r\n }else{\r\n this.currentItems = [item];\r\n item.selected = true;\r\n \r\n this.input.value = item.label;\r\n \r\n this._styleItem(item);\r\n \r\n if(!silent){\r\n this._resolveValue();\r\n }\r\n }\r\n \r\n this._focusItem(item);\r\n }\r\n \r\n _resolveValue(blur){\r\n var output, initialValue;\r\n \r\n this.popup.hide(true);\r\n \r\n if(this.params.multiselect){\r\n output = this.currentItems.map(item => item.value);\r\n }else{\r\n if(blur && this.params.autocomplete && this.typing){\r\n if(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\r\n output = this.input.value;\r\n }else{\r\n this.actions.cancel();\r\n return;\r\n }\r\n }else{\r\n if(this.currentItems[0]){\r\n output = this.currentItems[0].value;\r\n }else{\r\n initialValue = this.initialValues[0];\r\n \r\n if(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\r\n output = initialValue;\r\n }else{\r\n output = this.params.emptyValue;\r\n }\r\n }\r\n \r\n }\r\n }\r\n \r\n if(output === \"\"){\r\n output = this.params.emptyValue;\r\n }\r\n \r\n this.actions.success(output);\r\n \r\n if(this.isFilter){\r\n this.initialValues = output && !Array.isArray[output] ? [output] : output;\r\n }\r\n }\r\n \r\n}","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport list from './editors/list.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tlist:list,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\tif(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n\r\n if(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\r\n\t\tif(editorParams.selectContents){\r\n\t\t\tinput.select();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\r\n\t console.warn(\"The select editor has been deprecated, please use the new list editor\");\r\n\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","import List from '../../List.js';\r\n\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\r\n\tconsole.warn(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\r\n\r\n\teditorParams.autocomplete = true;\r\n\r\n var list = new List(this, cell, onRendered, success, cancel, editorParams);\r\n\r\n return list.input;\r\n}","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false,\r\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\r\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tvar checkedValue = input.checked;\r\n\r\n\t\tif(trueValueSet && checkedValue){\r\n\t\t\tcheckedValue = editorParams.trueValue;\r\n\t\t}else if(falseValueSet && !checkedValue){\r\n\t\t\tcheckedValue = editorParams.falseValue;\r\n\t\t}else{\r\n\t\t\tcheckedValue = checkedValue;\r\n\t\t}\r\n\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn checkedValue;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn checkedValue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn checkedValue;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(cell, e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.table.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(cell = this.currentCell, e){\r\n\t\tvar nextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(cell = this.currentCell, e){\r\n\t\tvar nextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(cell = this.currentCell, e){\r\n\t\tvar index, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(cell = this.currentCell, e){\r\n\t\tvar index, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].getComponent().edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successful value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\treturn valid === true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;\r\n","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\r\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\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\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\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\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\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\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.styleCells[index] || styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.styleCells[index] || styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\t\tthis.tableInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.tableInitialized = true;\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\tcolumn.modules.filter.value = initialValue;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\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);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft + parseInt(this.table.columnManager.element.style.marginLeft);\r\n\r\n\t\t\t\t\tif(left !== headerPos){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.tableInitialized){\r\n\t\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\t\tthis.reloadData();\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tsign = \"\",\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tif(floatVal < 0){\r\n\t\tfloatVal = Math.abs(floatVal);\r\n\t\tsign = negativeSign;\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\tif (formatterParams.thousand !== false) {\r\n\t\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\t\twhile (rgx.test(integer)){\r\n\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t\t}\r\n\t}\r\n\r\n\treturn after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tfunction labelTraverse(path, data){\r\n\t\tvar item = path.shift(),\r\n\t\tvalue = data[item];\r\n\t\t\r\n\t\tif(path.length && typeof value === \"object\"){\r\n\t\t\treturn labelTraverse(path, value);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime;\r\n\r\n\t\tif(DT.isDateTime(value)){\r\n\t\t\t newDatetime = value;\r\n\t\t }else if(inputFormat === \"iso\"){\r\n\t\t\t newDatetime = DT.fromISO(String(value));\r\n\t\t }else{\r\n\t\t\t newDatetime = DT.fromFormat(String(value), inputFormat);\r\n\t\t }\r\n\r\n\t\tif(newDatetime.isValid){\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\t\t\tif(invalid === true || !value){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime;\r\n\r\n\t\tif(DT.isDateTime(value)){\r\n\t\t\t newDatetime = value;\r\n\t\t }else if(inputFormat === \"iso\"){\r\n\t\t\t newDatetime = DT.fromISO(String(value));\r\n\t\t }else{\r\n\t\t\t newDatetime = DT.fromFormat(String(value), inputFormat);\r\n\t\t }\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\tvar blocked = false;\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\r\n\t\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\t\tif(!blocked){\r\n\t\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tblocked = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\tblocked = true;\r\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\t\tthis.blocked = true;\r\n\t\t\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\t\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\r\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.reinitializeColumns.bind(this));\r\n\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\r\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\r\n\t}\r\n\t\r\n\tblockLayout(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\t\r\n\tunblockLayout(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n\t\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\r\n\treinitializeColumns(){\r\n\t\tthis.reset();\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\t\t\r\n\t\tif(!column.isGroup){\r\n\t\t\t\r\n\t\t\tif(this.frozenCheck(column)){\r\n\t\t\t\t\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\t\t\t\t\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.active = true;\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfrozenCheck(column){\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\t\t\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\t\t\t\r\n\t\t\tthis.calcMargins(true);\r\n\t\t\t\r\n\t\t\tthis.layoutColumnPosition();\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t//calculate margins for rows\r\n\tcalcMargins(scroll){\r\n\t\t\r\n\t\tif(!scroll){\r\n\t\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\t\t\t\r\n\t\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\t\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\t\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\t\tvar leftParents = [];\r\n\t\t\r\n\t\tvar leftMargin = 0;\r\n\t\tvar rightMargin = 0;\r\n\t\t\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\t\r\n\t\t\tcolumn.modules.frozen.margin = (leftMargin + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tleftMargin += column.getWidth();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\trightMargin += column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - rightMargin) + \"px\";\r\n\t\t\t\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\t\r\n\t//layout columns appropriately\r\n\tlayout(){\r\n\t\tvar visibleRows = [],\r\n\t\totherRows = [];\r\n\r\n\t\tif(this.active && !this.blocked){\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition();\r\n\r\n\t\t\tvisibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t\totherRows = this.table.rowManager.getDisplayRows().filter(row => !visibleRows.includes(row));\r\n\r\n\t\t\totherRows.forEach((row) =>{\r\n\t\t\t\trow.deinitialize();\r\n\t\t\t});\r\n\r\n\t\t\tvisibleRows.forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.layoutCalcRows();\r\n\t\t\t\r\n\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutRow(row){\r\n\t\t// console.trace(\"row\")\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\t\t\r\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\r\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\r\n\t\t}\r\n\t\t\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tlayoutElement(element, column){\r\n\t\t\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\t\t\t\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\t\t\t\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\t\t\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\tvisibleRows(viewable, rows){\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trows.push(row);\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\t\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.element = false;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\t\t\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\t\t\r\n\t\tthis.component = null;\r\n\t\t\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\t\t\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\t\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\tif(row.modules){\r\n\t\t\t\t\tdelete row.modules.group;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.element = false;\r\n\t\tthis.arrowElement = false;\r\n\t\tthis.elementContents = false;\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\t\t\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\taddBindings(){\r\n\t\tvar toggleElement;\r\n\t\t\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\t\t\t\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\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);\r\n\t\t\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\t\r\n\t_addRowToGroup(row){\r\n\t\t\r\n\t\tvar level = this.level + 1;\r\n\t\t\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\t\t\t\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\t\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\t\t\r\n\t\trow.updateData(data);\r\n\t\t\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\t\t\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\trow.modules.group = this;\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\t\r\n\tscrollHeader(left){\r\n\t\tif(this.arrowElement){\r\n\t\t\tthis.arrowElement.style.marginLeft = left;\r\n\t\t\t\r\n\t\t\tthis.groupList.forEach(function(child){\r\n\t\t\t\tchild.scrollHeader(left);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowIndex(row){}\r\n\t\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\t\t\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\t\t\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\t\t\t\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\t\t\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\t\t\t\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\toutput.push(this);\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\t\t\t\t\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\t\t\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\t\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\t\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\t\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\t\t\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\t\t\t\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t\t\r\n\t\t\tvar prev = this.generateElement();\r\n\t\t\t\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\t\t\t\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\t\t\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\t\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tif(typeof this.visible == \"function\"){\r\n\t\t\t\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\t\t\t\t\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\t\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\t\t\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\t\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\t\r\n\t////////////// Standard Row Functions //////////////\r\n\t\r\n\tgetElement(){\r\n\t\treturn this.elementContents ? this.element : this.generateElement();\r\n\t}\r\n\t\r\n\tgenerateElement(){\r\n\t\tthis.addBindings = false;\r\n\t\t\r\n\t\tthis._visSet();\r\n\t\t\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\t\t\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\t\t\r\n\t\tthis.generateGroupHeaderContents();\r\n\t\t\r\n\t\t// this.addBindings();\r\n\t\t\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\t\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\t\t\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\t\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\t\r\n\treinitializeHeight(){}\r\n\t\r\n\tcalcHeight(){}\r\n\t\r\n\tsetCellHeight(){}\r\n\t\r\n\tclearCellHeight(){}\r\n\t\r\n\tdeinitializeHeight(){}\r\n\t\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureGroupSetup(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.initialize();\r\n\t\t}else{\r\n\t\t\tthis.configureGroupSetup();\r\n\t\t}\r\n\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.configureGroupSetup();\r\n\t\tthis.refreshData();\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.configureGroupSetup();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\r\n\r\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList = [];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Row from '../../core/row/Row.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","import Module from '../../core/Module.js';\r\nimport Column from '../../core/column/Column.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\r\n\t\t\tif(this.table.originalElement.childNodes.length){\r\n\t\t\t\tthis.parseTable();\r\n\t\t\t}else{\r\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.\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.originalElement,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for Tabulator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for Tabulator inline options\r\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t\taction.component.cellRendered();\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","function csvImporter(input){\r\n var data = [],\r\n row = 0, \r\n col = 0,\r\n inQuote = false;\r\n \r\n //Iterate over each character\r\n for (let index = 0; index < input.length; index++) {\r\n let char = input[index], \r\n nextChar = input[index+1]; \r\n \r\n //Initialize empty row\r\n if(!data[row]){\r\n data[row] = [];\r\n }\r\n\r\n //Initialize empty column\r\n if(!data[row][col]){\r\n data[row][col] = \"\";\r\n }\r\n \r\n //Handle quotation mark inside string\r\n if (char == '\"' && inQuote && nextChar == '\"') { \r\n data[row][col] += char; \r\n index++;\r\n continue; \r\n }\r\n \r\n //Begin / End Quote\r\n if (char == '\"') { \r\n inQuote = !inQuote;\r\n continue;\r\n }\r\n \r\n //Next column (if not in quote)\r\n if (char == ',' && !inQuote) { \r\n col++;\r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CRLF) \r\n if (char == '\\r' && nextChar == '\\n' && !inQuote) { \r\n col = 0; \r\n row++; \r\n index++; \r\n continue; \r\n }\r\n \r\n //New row if new line and not in quote (CR or LF) \r\n if ((char == '\\r' || char == '\\n') && !inQuote) { \r\n col = 0;\r\n row++;\r\n continue; \r\n }\r\n\r\n //Normal Character, append to column\r\n data[row][col] += char;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport default csvImporter;","import Module from '../../core/Module.js';\r\n\r\nimport defaultImporters from './defaults/importers.js';\r\n\r\nclass Import extends Module{\r\n \r\n constructor(table){\r\n super(table);\r\n \r\n this.registerTableOption(\"importFormat\");\r\n this.registerTableOption(\"importReader\", \"text\");\r\n }\r\n \r\n initialize(){\r\n this.registerTableFunction(\"import\", this.importFromFile.bind(this));\r\n\r\n if(this.table.options.importFormat){\r\n this.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\r\n this.subscribe(\"data-load\", this.loadData.bind(this), 10);\r\n }\r\n }\r\n\r\n loadDataCheck(data){\r\n return typeof data === \"string\";\r\n }\r\n\r\n loadData(data, params, config, silent, previousData){\r\n return this.importData(this.lookupImporter(), data)\r\n .then(this.structureData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import data\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n\r\n lookupImporter(importFormat){\r\n var importer;\r\n \r\n if(!importFormat){\r\n importFormat = this.table.options.importFormat;\r\n }\r\n \r\n if(typeof importFormat === \"string\"){\r\n importer = Import.importers[importFormat];\r\n }else{\r\n importer = importFormat;\r\n }\r\n\r\n if(!importer){\r\n console.error(\"Import Error - Importer not found:\", importFormat);\r\n }\r\n \r\n return importer;\r\n }\r\n \r\n importFromFile(importFormat, extension){\r\n var importer = this.lookupImporter(importFormat);\r\n \r\n if(importer){\r\n return this.pickFile(extension)\r\n .then(this.importData.bind(this, importer))\r\n .then(this.structureData.bind(this))\r\n .then(this.setData.bind(this))\r\n .catch((err) => {\r\n console.error(\"Import Error:\", err || \"Unable to import file\")\r\n return Promise.reject(err);\r\n })\r\n }\r\n }\r\n \r\n pickFile(extensions){\r\n return new Promise((resolve, reject) => {\r\n var input = document.createElement(\"input\");\r\n input.type = \"file\";\r\n input.accept = extensions;\r\n \r\n input.addEventListener(\"change\", (e) => {\r\n var file = input.files[0],\r\n reader = new FileReader(),\r\n data;\r\n \r\n switch(this.table.options.importReader){\r\n case \"buffer\":\r\n reader.readAsArrayBuffer(file);\r\n break;\r\n\r\n case \"binary\":\r\n reader.readAsBinaryString(file);\r\n break;\r\n\r\n case \"url\":\r\n reader.readAsDataURL(file);\r\n break;\r\n\r\n case \"text\":\r\n default:\r\n reader.readAsText(file);\r\n }\r\n \r\n reader.onload = (e) => {\r\n resolve(reader.result)\r\n };\r\n \r\n reader.onerror = (e) => {\r\n console.warn(\"File Load Error - Unable to read file\");\r\n reject();\r\n };\r\n });\r\n \r\n input.click();\r\n });\r\n }\r\n \r\n importData(importer, fileContents){\r\n var data = importer.call(this.table, fileContents);\r\n \r\n if(data instanceof Promise){\r\n return data;\r\n }else{\r\n return data ? Promise.resolve(data) : Promise.reject();\r\n }\r\n }\r\n\r\n structureData(parsedData){\r\n var data = [];\r\n \r\n if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\r\n if(this.table.options.autoColumns){\r\n data = this.structureArrayToObject(parsedData);\r\n }else{\r\n data = this.structureArrayToColumns(parsedData);\r\n }\r\n\r\n return data;\r\n }else{\r\n return parsedData;\r\n }\r\n }\r\n\r\n structureArrayToObject(parsedData){\r\n var columns = parsedData.shift();\r\n\r\n var data = parsedData.map((values) => {\r\n var row = {};\r\n\r\n columns.forEach((key, i) => {\r\n row[key] = values[i];\r\n })\r\n\r\n return row;\r\n })\r\n\r\n return data;\r\n }\r\n\r\n structureArrayToColumns(parsedData){\r\n var data = [],\r\n columns = this.table.getColumns();\r\n\r\n //remove first row if it is the column names\r\n if(columns[0] && parsedData[0][0]){\r\n if(columns[0].getDefinition().title === parsedData[0][0]){\r\n parsedData.shift();\r\n }\r\n }\r\n \r\n //convert row arrays to objects\r\n parsedData.forEach((rowData) => {\r\n var row = {};\r\n\r\n rowData.forEach((value, index) => {\r\n var column = columns[index];\r\n\r\n if(column){\r\n row[column.getField()] = value;\r\n }\r\n })\r\n\r\n data.push(row);\r\n });\r\n\r\n return data;\r\n }\r\n \r\n setData(data){\r\n return this.table.setData(data);\r\n }\r\n}\r\n\r\nImport.moduleName = \"import\";\r\n\r\n//load defaults\r\nImport.importers = defaultImporters;\r\n\r\nexport default Import;","export default function(input){\r\n try {\r\n return JSON.parse(input);\r\n } catch(e) {\r\n console.warn(\"JSON Import Error - File contents is invalid JSON\", e);\r\n return Promise.reject();\r\n }\r\n}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tgroup:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\r\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\r\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 89\"],\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings)\r\n\t\t\tObject.assign(mergedBindings, bindings)\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tbindingList.forEach((item) => {\r\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\r\n\t\t\t\t\t\t});\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","import Module from '../../core/Module.js';\r\n\r\nclass Menu extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.menuContainer = null;\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\t\r\n\t\tthis.currentComponent = null;\r\n\t\tthis.rootPopup = null;\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\r\n\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerClickMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t\t\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.deprecationCheck();\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\r\n\tdeprecationCheck(){\r\n\t\tif(typeof this.table.options.menuContainer !== \"undefined\"){\r\n\t\t\tconsole.warn(\"Use of the menuContainer option is now deprecated. Please use the popupContainer option instead\");\r\n\r\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\r\n\t\t}\r\n\t}\t\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextMenu\", \"headerClickMenu\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\r\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\r\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerMenu){\r\n\t\t\tthis.initializeColumnHeaderMenu(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\r\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\r\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderMenu(column){\r\n\t\tvar icon = column.definition.headerMenuIcon,\r\n\t\theaderMenuEl;\r\n\t\t\r\n\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\r\n\r\n\t\tif(icon){\r\n\t\t\tif(typeof icon === \"function\"){\r\n\t\t\t\ticon = icon(column.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tif(icon instanceof HTMLElement){\r\n\t\t\t\theaderMenuEl.appendChild(icon);\r\n\t\t\t}else{\r\n\t\t\t\theaderMenuEl.innerHTML = icon;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\t\t}\r\n\t\t\r\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadMenuTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadMenuEvent(menu, e, component){\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\r\n\t\t\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\t\r\n\tloadMenu(e, component, menu, parentEl, parentPopup){\r\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\r\n\t\tmenuEl = document.createElement(\"div\"),\r\n\t\tpopup;\r\n\t\t\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\t\t\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.rootPopup){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.rootPopup){\r\n\t\t\t\tthis.rootPopup.hide();\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tpopup = parentPopup.child(menuEl);\r\n\t\t}\r\n\t\t\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\t\t\t\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\t\t\t\t\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\t\t\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.rootPopup.hide();\r\n\t\t});\r\n\t\t\r\n\t\tpopup.show(parentEl || e);\r\n\t\t\r\n\t\tif(popup === this.rootPopup){\r\n\t\t\tthis.rootPopup.hideOnBlur(() => {\r\n\t\t\t\tthis.rootPopup = null;\r\n\t\t\t\t\r\n\t\t\t\tif(this.currentComponent){\r\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\r\n\t\t\t\t\tthis.currentComponent = null;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.currentComponent = component;\r\n\r\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent())\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;\r\n","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\t\t\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\t\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\t\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableColumns){\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\t\t\r\n\t\tif(!column.modules.frozen){\r\n\t\t\tcolEl = column.getElement();\r\n\t\t\t\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\t\t\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\t\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\t\t\t\t\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\t\t\t\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\t\t\t\t\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\t\t\t\t\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\t\t\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement(),\r\n\t\theaderElement = this.table.columnManager.getElement(),\r\n\t\theadersElement = this.table.columnManager.getHeadersElement();\r\n\t\t\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\t\t\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\t\t\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\t\t\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\t\t\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\t\t\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\r\n\t\t\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\t\t\t\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\t\t\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\t\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\t\t\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\t\t\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\t\t\t\t\r\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\t\t\t\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\t\t\t\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\t\t\t\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\t\t\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\t\t\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"mutateLink\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tmutateLink(cell){\r\n\t\tvar links = cell.column.definition.mutateLink;\r\n\r\n\t\tif(links){\r\n\t\t\tif(!Array.isArray(links)){\r\n\t\t\t\tlinks = [links];\r\n\t\t\t}\r\n\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tvar linkCell = cell.row.getCell(link);\r\n\r\n\t\t\t\tif(linkCell){\r\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\tvar el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\r\n\tif(totalRows){\r\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\r\n\t\t\r\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\r\n\t\t\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(ofEl);\r\n\t\tel.appendChild(totalEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}else{\r\n\t\tvalueEl.innerHTML = \" 0 \";\r\n\r\n\t\tel.appendChild(showingEl);\r\n\t\tel.appendChild(valueEl);\r\n\t\tel.appendChild(rowsEl);\r\n\t}\r\n\t\r\n\treturn el;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPageCounters from './defaults/pageCounters.js';\r\n\r\nclass Page extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\t\t\r\n\t\tthis.element = null;\r\n\t\tthis.pageCounterElement = null;\r\n\t\tthis.pageCounter = null;\r\n\t\t\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.remoteRowCountEstimate = null;\r\n\t\t\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\t\t\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\t\t\r\n\t\tthis.pageSizes = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\r\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\t\t\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\t\t\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\r\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\t\t\t\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePageCounter();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\t\t\t\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn {index, top}\r\n\t}\r\n\t\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\t\t\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\t\t\t\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\t\t\t\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\t\t\t\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\t\t\t\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\r\n\t\t\r\n\t\tthis.generatePageSizeSelectList();\r\n\t}\r\n\t\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\t\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\t\t\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\t\t\r\n\t\treturn params;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn Promise.reject();\r\n\t}\r\n\t\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\t\t\t\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\t\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\t\t\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\t\t\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\t\t\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\t\t\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\t\t\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\t\t\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\t\t\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\t\t\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\t\t\t\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\t\t\t\t\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializePageCounter(){\r\n\t\tvar counter = this.table.options.paginationCounter,\r\n\t\tpageCounter = null;\r\n\t\t\r\n\t\tif(counter){\r\n\t\t\tif(typeof counter === \"function\"){\r\n\t\t\t\tpageCounter = counter;\r\n\t\t\t}else{\r\n\t\t\t\tpageCounter = Page.pageCounters[counter];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(pageCounter){\r\n\t\t\t\tthis.pageCounter = pageCounter;\r\n\t\t\t\t\r\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\r\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup pagination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel, paginationCounterHolder;\r\n\t\t\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\t\t\t\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\t\t\t\t\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\t\t\t\t\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\t\t\t\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tif(this.table.options.paginationCounter){\r\n\r\n\t\t\t\t\tpaginationCounterHolder \r\n\r\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\r\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\r\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\r\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(paginationCounterHolder){\r\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.footerAppend(this.pageCounterElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.footerAppend(this.element);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\t\t}\r\n\t\t\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\t\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\t\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\t\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\t\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\t\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set the maximum page\r\n\tsetMaxPage(max){\r\n\t\t\r\n\t\tmax = parseInt(max);\r\n\t\t\r\n\t\tthis.max = max || 1;\r\n\t\t\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t\r\n\t\tpage = parseInt(page);\r\n\t\t\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\t\t\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\t\t\t\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\r\n\t\t}\r\n\t\t\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\t\t\r\n\t\tthis.trackChanges();\r\n\t}\r\n\t\r\n\t_setPageCounter(totalRows, size, currentRow){\r\n\t\tvar content;\r\n\t\t\r\n\t\tif(this.pageCounter){\r\n\r\n\t\t\tif(this.mode === \"remote\"){\r\n\t\t\t\tsize = this.size;\r\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\r\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\r\n\t\t\t}\r\n\r\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\r\n\t\t\t\r\n\t\t\tswitch(typeof content){\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\tif(content instanceof Node){\r\n\t\t\t\t\t\r\n\t\t\t\t\t//clear previous cell contents\r\n\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.pageCounterElement.appendChild(content);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(content != null){\r\n\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);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"undefined\":\r\n\t\t\t\tcase \"null\":\r\n\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\r\n\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.pageCounterElement.innerHTML = content;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\t\t\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\t\t\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\t\t\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\t\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\t\t\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\t\t\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\t\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\t\t\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\t\t\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\t\t\r\n\t\treturn button;\r\n\t}\r\n\t\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger()\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\t\t\t\r\n\t\t\tthis.trackChanges();\r\n\t\t\t\r\n\t\t\treturn this.trigger();\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\t\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\t\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\t\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\t\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar actualRowPageSize = 0,\r\n\t\toutput, start, end, actualStartRow;\r\n\r\n\t\tvar actualRows = data.filter((row) => {\r\n\t\t\treturn row.type === \"row\";\r\n\t\t});\r\n\t\t\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\t\t\t\r\n\t\t\tthis.setMaxRows(data.length);\r\n\t\t\t\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageButtons();\r\n\t\t\t\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tlet row = data[i];\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\toutput.push(row);\r\n\r\n\t\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\t\tif(!actualStartRow){\r\n\t\t\t\t\t\t\tactualStartRow = row;\r\n\t\t\t\t\t\t}\t\r\n\r\n\t\t\t\t\t\tactualRowPageSize++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\r\n\t\t\t\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\t\t\tthis._setPageCounter(actualRows.length);\r\n\t\t\t\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrigger(){\r\n\t\tvar left;\r\n\t\t\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\t\t\t\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\t\t\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\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));\r\n\t\t\t\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\t\t\t\t\t\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\r\n\t\t}\r\n\t\t\r\n\t\treturn data.data;\r\n\t}\r\n\t\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.containerElement;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\t\t\t\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\n//load defaults\r\nPage.pageCounters = defaultPageCounters;\r\n\r\nexport default Page;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\r\n\r\n var el = document.createElement(\"span\"),\r\n\tshowingEl = document.createElement(\"span\"),\r\n\tvalueEl = document.createElement(\"span\"),\r\n\tofEl = document.createElement(\"span\"),\r\n\ttotalEl = document.createElement(\"span\"),\r\n\trowsEl = document.createElement(\"span\");\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\r\n\t\tshowingEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\r\n\t\tofEl.innerHTML = value;\r\n\t});\r\n\t\r\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\r\n\t\r\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\r\n\t\trowsEl.innerHTML = value;\r\n\t});\r\n\t\r\n\tel.appendChild(showingEl);\r\n\tel.appendChild(valueEl);\r\n\tel.appendChild(ofEl);\r\n\tel.appendChild(totalEl);\r\n\tel.appendChild(rowsEl);\r\n\t\r\n\treturn el;\r\n};","import rows from './pageCounters/rows.js';\r\nimport pages from './pageCounters/pages.js';\r\n\r\n\r\nexport default {\r\n\trows:rows,\r\n\tpages:pages,\r\n};","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.slice(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.slice(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};\r\n","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.options.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.options.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\nPersistence.moduleInitOrder = -10;\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Popup extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.columnSubscribers = {};\r\n\t\t\r\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\r\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\r\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\r\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\r\n\t\t\r\n\t\tthis.registerColumnOption(\"headerContextPopup\");\r\n\t\tthis.registerColumnOption(\"headerClickPopup\");\r\n\t\tthis.registerColumnOption(\"headerPopup\");\r\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\r\n\t\tthis.registerColumnOption(\"contextPopup\");\r\n\t\tthis.registerColumnOption(\"clickPopup\");\r\n\t\t\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializeRowWatchers();\r\n\t\tthis.initializeGroupWatchers();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tinitializeRowWatchers(){\r\n\t\tif(this.table.options.rowContextPopup){\r\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\r\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.rowClickPopup){\r\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeGroupWatchers(){\r\n\t\tif(this.table.options.groupContextPopup){\r\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\r\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\r\n\t\t}\r\n\t\t\r\n\t\tif(this.table.options.groupClickPopup){\r\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tvar options = [\"headerContextPopup\", \"headerClickPopup\"],\r\n\t\tdef = column.definition;\r\n\t\t\r\n\t\t//handle column events\r\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\r\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\r\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\r\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\r\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\r\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\r\n\t\t}\r\n\t\t\r\n\t\tif(def.headerPopup){\r\n\t\t\tthis.initializeColumnHeaderPopup(column);\r\n\t\t}\r\n\t\t\r\n\t\t//handle cell events\r\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\r\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\r\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\r\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"))\r\n\t\t}\r\n\t\t\r\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\r\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\r\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumnHeaderPopup(column){\r\n\t\tvar icon = column.definition.headerPopupIcon,\r\n\t\theaderPopupEl;\r\n\t\t\r\n\t\theaderPopupEl = document.createElement(\"span\");\r\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\r\n\r\n\t\tif(icon){\r\n\t\t\tif(typeof icon === \"function\"){\r\n\t\t\t\ticon = icon(column.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tif(icon instanceof HTMLElement){\r\n\t\t\t\theaderPopupEl.appendChild(icon);\r\n\t\t\t}else{\r\n\t\t\t\theaderPopupEl.innerHTML = icon;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\r\n\t\t}\r\n\t\t\r\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\r\n\t\t});\r\n\t\t\r\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\r\n\t}\r\n\t\r\n\tloadPopupTableCellEvent(option, e, cell){\r\n\t\tif(cell._cell){\r\n\t\t\tcell = cell._cell;\r\n\t\t}\r\n\t\t\r\n\t\tif(cell.column.definition[option]){\r\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadPopupTableColumnEvent(option, e, column){\r\n\t\tif(column._column){\r\n\t\t\tcolumn = column._column;\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition[option]){\r\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadPopupEvent(contents, e, component){\r\n\t\tvar renderedCallback;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trenderedCallback = callback;\r\n\t\t}\r\n\t\t\r\n\t\tif(component._group){\r\n\t\t\tcomponent = component._group;\r\n\t\t}else if(component._row){\r\n\t\t\tcomponent = component._row;\r\n\t\t}\r\n\t\t\r\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\r\n\t\t\r\n\t\tthis.loadPopup(e, component, contents, renderedCallback);\r\n\t}\r\n\t\r\n\tloadPopup(e, component, contents, renderedCallback){\r\n\t\tvar touch = !(e instanceof MouseEvent),\r\n\t\tcontentsEl, popup;\r\n\t\t\r\n\t\tif(contents instanceof HTMLElement){\r\n\t\t\tcontentsEl = contents;\r\n\t\t}else{\r\n\t\t\tcontentsEl = document.createElement(\"div\");\r\n\t\t\tcontentsEl.innerHTML = contents;\r\n\t\t}\r\n\t\t\r\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\r\n\r\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\t\r\n\t\tpopup = this.popup(contentsEl);\r\n\r\n\t\tif(typeof renderedCallback === \"function\"){\r\n\t\t\tpopup.renderCallback(renderedCallback);\r\n\t\t}\r\n\t\t\r\n\t\tpopup.show(e).hideOnBlur(() => {\r\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\r\n\t\t});\r\n\r\n\r\n\r\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent())\r\n\t}\r\n}\r\n\r\nPopup.moduleName = \"popup\";\r\n\r\nexport default Popup;\r\n","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar self = this,\r\n\t\tpushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn self.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: function(){\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.latestX = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.initialNextColumn = null;\r\n\t\tthis.nextColumn = null;\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\r\n\t}\r\n\t\r\n\tinitializeEventWatchers(){\r\n\t\tif(!this.initialized){\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\r\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\r\n\t\t\t\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.deInitializeComponent(cell);\r\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tlayoutColumnHeader(column){\r\n\t\tif(column.definition.resizable){\r\n\t\t\tthis.initializeEventWatchers();\r\n\t\t\tthis.deInitializeComponent(column);\r\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolumnLayoutUpdated(column){\r\n\t\tvar prev = column.prevColumn();\r\n\t\t\r\n\t\tthis.reinitializeColumn(column);\r\n\t\t\r\n\t\tif(prev){\r\n\t\t\tthis.reinitializeColumn(prev);\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeColumn(column){\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\r\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\r\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeColumn(type, component, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable,\r\n\t\tconfig = {},\r\n\t\tnearestColumn = column.getLastColumn();\r\n\t\t\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tconfig = {variableHeight:variableHeight};\r\n\t\t}\r\n\t\t\r\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\r\n\t\t\t\r\n\t\t\tvar handle = document.createElement('span');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tself.startColumn = column;\r\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\r\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\t\t\t\r\n\t\t\t//resize column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\r\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\r\n\t\t\t\t\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tnearestColumn.reinitializeWidth(true);\r\n\t\t\t\t\r\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\r\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tconfig.handleEl = handle;\r\n\t\t\t\r\n\t\t\tif(element.parentNode){\r\n\t\t\t\telement.after(handle);\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tcomponent.modules.resize = config;\r\n\t}\r\n\t\r\n\tdeInitializeColumn(column){\r\n\t\tthis.deInitializeComponent(column);\r\n\t\t\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tthis.deInitializeComponent(cell);\r\n\t\t});\r\n\t}\r\n\t\r\n\tdeInitializeComponent(component){\r\n\t\tvar handleEl;\r\n\t\t\r\n\t\tif(component.modules.resize){\r\n\t\t\thandleEl = component.modules.resize.handleEl;\r\n\t\t\t\r\n\t\t\tif(handleEl && handleEl.parentElement){\r\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tresizeHandle(component, height){\r\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\r\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\t\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\t\t\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\tfunction mouseMove(e){\r\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\r\n\t\t\tstartDiff = x - self.startX,\r\n\t\t\tmoveDiff = x - self.latestX,\r\n\t\t\tblockedBefore, blockedAfter;\r\n\r\n\t\t\tself.latestX = x;\r\n\t\t\t\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tstartDiff = -startDiff;\r\n\t\t\t\tmoveDiff = -moveDiff;\r\n\t\t\t}\r\n\r\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\r\n\r\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\r\n\r\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\r\n\r\n\t\t\tif(moveDiff < 0){\r\n\t\t\t\tself.nextColumn = self.initialNextColumn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\r\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\r\n\r\n\t\t\t\tif(moveDiff > 0){\r\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\r\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(self.nextColumn){\r\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\t\t\t\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tfunction mouseUp(e){\r\n\t\t\t\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\t\t\t\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\t\t\t\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\t\t\t\r\n\t\t\tif(self.startWidth !== column.getWidth()){\r\n\t\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\t\t\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\t\t\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.latestX = self.startX;\r\n\t\tself.startWidth = column.getWidth();\r\n\t\t\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate responsive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//determine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\r\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort((a, b) => {\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initializeResponsivity();\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\t\t\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\t\t\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\t\t\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\r\n\t\t\t\r\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\t\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\t\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\t\t\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\t\t\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\t\t\t\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\t\t\t\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\t\t\r\n\t\trow.modules.select = {selected:false};\r\n\t\t\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\t\t\t\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\t\r\n\thandleComplexRowClick(row, e){\r\n\t\tif(e.shiftKey){\r\n\t\t\tthis.table._clearSelection();\r\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\r\n\t\t\t\r\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\r\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\r\n\t\t\t\r\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\r\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\t\t\t\r\n\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\r\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\r\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\r\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.lastClickedRow = row;\r\n\t\t\t}else{\r\n\t\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.selectable !== true){\r\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\r\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectRows(toggledRows);\r\n\t\t\t}\r\n\t\t\tthis.table._clearSelection();\r\n\t\t}\r\n\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\tthis.toggleRow(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}else{\r\n\t\t\tthis.deselectRows(undefined, true);\r\n\t\t\tthis.selectRows(row);\r\n\t\t\tthis.lastClickedRow = row;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\t\t\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"string\":\r\n\t\t\t\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\t\t\t\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\t\t\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\t\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\t\t\r\n\t\tif(typeof rows == \"undefined\"){\r\n\t\t\t\r\n\t\t\trowCount = self.selectedRows.length;\r\n\t\t\t\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(rowCount){\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\t\t\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\t\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\t\t\t\t\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\tgetSelectedRows(){\r\n\t\t\r\n\t\tvar rows = [];\r\n\t\t\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\t\t\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\t\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\t\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\t\t\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tif(DT.isDateTime(a)){\r\n\t\t\t a = a;\r\n\t\t}else if(format === \"iso\"){\r\n\t\t\t a = DT.fromISO(String(a));\r\n\t\t}else{\r\n\t\t\t a = DT.fromFormat(String(a), format);\r\n\t\t}\r\n\r\n\t\tif(DT.isDateTime(b)){\r\n\t\t\t b = b;\r\n\t\t}else if(format === \"iso\"){\r\n\t\t\t b = DT.fromISO(String(b));\r\n\t\t}else{\r\n\t\t\t b = DT.fromFormat(String(b), format);\r\n\t\t}\r\n\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData(true);\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import Module from '../../core/Module.js';\r\nimport Cell from '../../core/cell/Cell.js';\r\n\r\nclass Tooltip extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.tooltipSubscriber = null,\r\n\t\tthis.headerSubscriber = null,\r\n\t\t\r\n\t\tthis.timeout = null;\r\n\t\tthis.popupInstance = null;\r\n\t\t\r\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\r\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \r\n\t\t\r\n\t\tthis.registerColumnOption(\"tooltip\");\r\n\t\tthis.registerColumnOption(\"headerTooltip\");\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.deprecationCheck();\r\n\t\t\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\t\r\n\tdeprecationCheck(){\r\n\t\tif(typeof this.table.options.tooltipGenerationMode !== \"undefined\"){\r\n\t\t\tconsole.warn(\"Use of the tooltipGenerationMode option is now deprecated. This option is no longer needed as tooltips are always generated on hover now\");\r\n\t\t}\r\n\t}\t\r\n\t\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\r\n\t\t\tthis.headerSubscriber = true;\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\r\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\r\n\t\t}\r\n\t\t\r\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\r\n\t\t\tthis.tooltipSubscriber = true;\r\n\t\t\t\r\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\r\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\r\n\t\t}\r\n\t}\r\n\t\r\n\tmousemoveCheck(action, e, component){\r\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\r\n\t\t\r\n\t\tif(tooltip){\r\n\t\t\tthis.clearPopup();\r\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\r\n\t\t}\r\n\t}\r\n\r\n\tmouseoutCheck(action, e, component){\r\n\t\tif(!this.popupInstance){\r\n\t\t\tthis.clearPopup();\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearPopup(action, e, component){\r\n\t\tclearTimeout(this.timeout);\r\n\t\tthis.timeout = null;\r\n\t\t\r\n\t\tif(this.popupInstance){\r\n\t\t\tthis.popupInstance.hide();\r\n\t\t}\r\n\t}\r\n\t\r\n\tloadTooltip(e, component, tooltip){\r\n\t\tvar contentsEl, renderedCallback, coords;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trenderedCallback = callback;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof tooltip === \"function\"){\r\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\r\n\t\t}\r\n\t\t\r\n\t\tif(tooltip instanceof HTMLElement){\r\n\t\t\tcontentsEl = tooltip;\r\n\t\t}else{\r\n\t\t\tcontentsEl = document.createElement(\"div\");\r\n\t\t\t\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(component instanceof Cell){\r\n\t\t\t\t\ttooltip = component.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(component.definition.field){\r\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\r\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\ttooltip = component.definition.title;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcontentsEl.innerHTML = tooltip;\r\n\t\t}\r\n\t\t\r\n\t\tif(tooltip || tooltip === 0 || tooltip === \"0\" || tooltip === false){\r\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\r\n\r\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault())\r\n\t\t\t\r\n\t\t\tthis.popupInstance = this.popup(contentsEl);\r\n\t\t\t\r\n\t\t\tif(typeof renderedCallback === \"function\"){\r\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\r\n\t\t\t}\r\n\r\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\r\n\t\t\t\r\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\r\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\r\n\t\t\t\tthis.popupInstance = null;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\r\n\t\t}\r\n\t}\r\n}\r\n\r\nTooltip.moduleName = \"tooltip\";\r\n\r\nexport default Tooltip;\r\n","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.invalidCells = [];\r\n\t\t\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\t\t\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\t\t\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\t\t\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\t\t\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\t\r\n\t\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\t\r\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\r\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\r\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Event Handling //////////\r\n\t///////////////////////////////////\r\n\t\r\n\teditValidate(cell, value, previousValue){\r\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\r\n\t\t\r\n\t\t// allow time for editor to make render changes then style cell\r\n\t\tif(valid !== true){\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn valid;\r\n\t}\r\n\t\r\n\teditorClear(cell, cancelled){\r\n\t\tif(cancelled){\r\n\t\t\tif(cell.column.modules.validate){\r\n\t\t\t\tthis.cellValidate(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t}\r\n\t\r\n\teditedClear(cell){\r\n\t\tif(cell.modules.validate){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\r\n\t}\r\n\t\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\t\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\t\t\r\n\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\t\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\t\t\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\t\r\n\t\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\t\t\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\t\t\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\t\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trow = row.getComponent();\r\n\t\t\t\r\n\t\t\tvar valid = row.validate();\r\n\t\t\t\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\t\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\t\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\t\t\r\n\t\tif(column.definition.validator){\r\n\t\t\t\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\t\t\t\t\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\t\t\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\t\t\t\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t_buildValidator(type, params){\r\n\t\t\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\t\t\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\t\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tfailedValidators = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\t\t\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach((item) => {\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tfailedValidators.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\t\t\r\n\t\tif(!failedValidators.length){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = failedValidators;\r\n\t\t\t\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn failedValidators.length ? failedValidators : true;\r\n\t}\r\n\t\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\t\t\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\t\t\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\t\t\t\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\t\t\t\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\tdebugInitialization:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tpopupContainer:false,\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //separator for nested data\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\trowHeight:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\tdataLoaderErrorTimeout:3000,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}\r\n","export default class OptionsList {\r\n\tconstructor(table, msgType, defaults = {}){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = Object.assign({}, defaults)\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determine weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\t\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t\t\r\n\t\tthis.fitDataColAvg = 0;\r\n\t\t\r\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\r\n\t\t\r\n\t\tthis.visibleRows = null;\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.isFitData = false;\r\n\t\t\r\n\t\tthis.columns = [];\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.compatibilityCheck();\r\n\t\tthis.layoutCheck();\r\n\t\tthis.vertScrollListen();\r\n\t}\r\n\t\r\n\tcompatibilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\t\t\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\t\t\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\t\t\r\n\t\treturn ok;\r\n\t}\r\n\t\r\n\tlayoutCheck(){\r\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\r\n\t}\r\n\r\n\tvertScrollListen(){\r\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\r\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\r\n\t}\r\n\r\n\tclearVisRowCache(){\r\n\t\tthis.visibleRows = null;\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\t\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\t\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\t\t\t\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\r\n\t\t}\r\n\t}\r\n\t\r\n\tcalcWindowBuffer(){\r\n\t\tvar buffer = this.elementVertical.clientWidth;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tif(width > buffer){\r\n\t\t\t\t\tbuffer = width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.windowBuffer = buffer * 2;\r\n\t}\r\n\t\r\n\trerenderColumns(update, blockRedraw){\t\t\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t},\r\n\t\tcolPos = 0;\r\n\t\t\r\n\t\t\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.clear();\r\n\t\t\r\n\t\tthis.calcWindowBuffer();\r\n\t\t\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\t\t\t\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\t\t\t\t\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\t\t\t\t\r\n\t\t\t\tconfig.width = width;\r\n\t\t\t\t\r\n\t\t\t\tif (this.isFitData) {\r\n\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t\t\t\t\t//column is visible\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol == -1){\r\n\t\t\t\t\t\tthis.leftCol = this.columns.length;\r\n\t\t\t\t\t\tthis.vDomPadLeft = colPos;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol = this.columns.length;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// column is hidden\r\n\t\t\t\t\tif(this.leftCol !== -1){\r\n\t\t\t\t\t\tthis.vDomPadRight += width;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\t\r\n\t\t\t\tcolumn.modules.vdomHoz = config;\r\n\t\t\t\t\r\n\t\t\t\tcolPos += width;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.reinitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\t\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\t\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\t\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\t\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\t\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\t\t\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\t\t\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\t\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\t\t\r\n\t\tif(this.isFitData){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\r\n\t\t\t\t\t})[0];\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.generateCells();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// if(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t// \tbreak;\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// for(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t// \tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\t\t\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn !match;\r\n\t}\r\n\t\r\n\treinitializeRows(){\r\n\t\tvar rows = this.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\t\r\n\tgetVisibleRows(){\r\n\t\tif (!this.visibleRows){\r\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\r\n\t\t}\r\n\r\n\t\treturn this.visibleRows;\t\r\n\t}\r\n\t\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\t\r\n\t\t\tlet column = this.columns[this.rightCol + 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t\t\t}\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol - 1];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\r\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(diff){\r\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\r\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColRight(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.rightCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\t\t\tthis.rightCol --;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tremoveColLeft(){\r\n\t\tvar changes = false;\r\n\t\t\r\n\t\twhile(true){\r\n\t\t\tlet column = this.columns[this.leftCol];\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\t\t\t\t\tchanges = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\r\n\t\t\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t\t\t} catch (ex) {\r\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\t\t\tthis.leftCol ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(changes){\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\t\t\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\t\t\t\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn widthDiff;\r\n\t}\r\n\t\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\t\t\t\t\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\t\t\t\t\t\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\t\t\t\t\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nimport defaultColumnOptions from './column/defaults/options.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\t\t\tvar topColumn = nextToColumn.getTopColumn()\r\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\r\n\t\t\tvar nextEl = topColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcolumn.columnRendered();\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\tverticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibleColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis.verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.clearRows();\r\n\t\tthis.renderRows();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\t// element.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\r\n\t\t});\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\t\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\t\tthis.placeholder = null; //placeholder element\r\n\t\tthis.placeholderContents = null; //placeholder element\r\n\t\t\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\t\t\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\t\t\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\t\t\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\t\t\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\t\t\r\n\t\tthis.renderer = null;\r\n\t}\r\n\t\r\n\t//////////////// Setup Functions /////////////////\r\n\t\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\t\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\t\tel.setAttribute(\"role\", \"rowgroup\");\r\n\t\t\r\n\t\treturn el;\r\n\t}\r\n\t\r\n\tinitializePlaceholder(){\r\n\t\t//configure placeholder element\r\n\t\tif(typeof this.table.options.placeholder == \"string\"){\r\n\t\t\tlet el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\t\t\t\r\n\t\t\tlet contents = document.createElement(\"div\");\r\n\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\r\n\t\t\tcontents.innerHTML = this.table.options.placeholder;\r\n\t\t\t\r\n\t\t\tel.appendChild(contents);\r\n\t\t\t\r\n\t\t\tthis.placeholderContents = contents;\r\n\t\t\tthis.placeholder = el;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\t\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\t\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.initializePlaceholder()\r\n\t\tthis.initializeRenderer();\r\n\t\t\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\t\t\r\n\t\tthis.firstRender = true;\r\n\t\t\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\t\t\t\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\r\n\t\t\t\tthis._positionPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//handle vertical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\t\t\t\t\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\t\t\t\t\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\t\t\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\t\t\r\n\t\treturn match || false;\r\n\t}\r\n\t\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\t\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\t\t\t\t\r\n\t\t\t\tthis._setDataActual(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\t\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\t\t\r\n\t\tthis._wipeElements();\r\n\t\t\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\t\t\t\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\t\t\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\t\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\t\t\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\t\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\t\t\t\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlength = data.length - 1;\r\n\t\t\t\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.refreshActiveData(false, false, true);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\t\t\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn pos;\r\n\t}\r\n\t\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\t\t\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\t\t\t\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\t\t\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\t\t\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\t\t\t\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\t\t\t\t\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\t\r\n\t\t\tif(top){\r\n\t\t\t\t\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\t\t\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\t\t\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\t\t\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\t\t\r\n\t\treturn row;\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\t\t\r\n\t\tthis.moveRowActual(from, to, after);\r\n\t\t\r\n\t\tthis.regenerateRowNumbers();\r\n\t\t\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\t\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\t\t\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\t\t\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\t\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\t\t\r\n\t\tif(from !== to){\r\n\t\t\t\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\t\t\t\r\n\t\t\tif (fromIndex > -1) {\r\n\t\t\t\t\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\t\t\t\t\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\t\t\t\t\r\n\t\t\t\tif (toIndex > -1) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\t\t\t\t\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\t\t\t\t\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\t\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\t\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\t\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\t\t\r\n\t\t\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\t\t\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn nextRow;\r\n\t}\r\n\t\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\t\t\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\t\t\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\t\t\r\n\t\treturn prevRow;\r\n\t}\r\n\t\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\t\t\r\n\t\trow = this.findRow(row);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\t\t\t\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\t\t\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\t\t\r\n\t\treturn rows.length;\r\n\t}\r\n\t\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\t\t\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\t\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\t\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\t\t\r\n\t\t\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\t\t\t\t\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.renderTable();\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.dispatch(\"data-refreshed\");\r\n\t\t}\r\n\t}\r\n\t\r\n\trefreshPipelines(handler, stage, index, renderInPosition){\r\n\t\tthis.dispatch(\"data-refreshing\");\r\n\t\t\r\n\t\tif(!handler){\r\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t}\r\n\t\t\r\n\t\t//cascade through data refresh stages\r\n\t\tswitch(stage){\r\n\t\t\tcase \"all\":\r\n\t\t\t//handle case where alldata needs refreshing\r\n\t\t\t\r\n\t\t\tcase \"dataPipeline\":\r\n\t\t\t\r\n\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\t\t\t\t\r\n\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\t\t\t\r\n\t\t\tthis.regenerateRowNumbers();\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\tindex = 0;\r\n\t\t\tthis.resetDisplayRows();\r\n\t\t\t\r\n\t\t\tcase \"displayPipeline\":\r\n\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\t\t\t\t\r\n\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcase \"end\":\r\n\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t}\r\n\t}\r\n\t\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\t\t\t\t\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\t\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\t\t\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\t\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\t\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\t\t\r\n\t\tvar output = true;\r\n\t\t\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\t\t\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\t\t\r\n\t\treturn output;\r\n\t}\r\n\t\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetVisibleRows(chain, viewable){\r\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\r\n\t\t\r\n\t\tif(chain){\r\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\t\t\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\t\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\t\t\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(false, true);\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\t\t\r\n\t\treturn rows;\r\n\t}\r\n\t\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\t\t\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\t\t\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\t\t\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t\t\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\t\r\n\trenderTable(){\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\t\t\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tthis._clearTable();\r\n\t\t\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis.renderer.renderRows();\r\n\t\t\t\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\t\t\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatch(\"table-layout\");\r\n\t\t\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\t\t\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\t\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\t\t\r\n\t\tthis._clearPlaceholder();\r\n\t\t\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t\t\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\t\r\n\t_showPlaceholder(){\r\n\t\tif(this.placeholder){\r\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\t\t\t\r\n\t\t\tthis.getElement().appendChild(this.placeholder);\r\n\t\t\tthis._positionPlaceholder();\r\n\t\t}\r\n\t}\r\n\t\r\n\t_clearPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\r\n\t\t}\r\n\t}\r\n\t\r\n\t_positionPlaceholder(){\r\n\t\tif(this.placeholder && this.placeholder.parentNode){\r\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\r\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\t\t\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\t\t\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\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));\r\n\t\t\t\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.renderer.resize();\r\n\t\t\t\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._positionPlaceholder();\r\n\t}\r\n\t\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\t\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\t\t\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\t\t\t\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRenderInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.redrawBlockRenderInPosition = false;\r\n\t}\r\n\t\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\t\t\r\n\t\tthis.adjustTableSize();\r\n\t\t\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\t\t\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\t\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\t\t\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.containerElement = this.createContainerElement(); //containing element\r\n\t\tthis.external = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t\r\n\tcreateContainerElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer-contents\");\r\n\r\n\t\tthis.element.appendChild(el);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element){\r\n\t\tthis.activate();\r\n\r\n\t\tthis.containerElement.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element){\r\n\t\tthis.activate();\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.dispatch(\"footer-redraw\")\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\nimport Row from '../row/Row.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\t\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\t\t\r\n\t\tthis.el = null;\r\n\t\t\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\t\t\r\n\t\tthis.previousTargets = {};\r\n\t\t\r\n\t\tthis.listeners = [\r\n\t\t\t\"click\",\r\n\t\t\t\"dblclick\",\r\n\t\t\t\"contextmenu\",\r\n\t\t\t\"mouseenter\",\r\n\t\t\t\"mouseleave\",\r\n\t\t\t\"mouseover\",\r\n\t\t\t\"mouseout\",\r\n\t\t\t\"mousemove\",\r\n\t\t\t\"touchstart\",\r\n\t\t\t\"touchend\",\r\n\t\t];\r\n\t\t\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\t\t\r\n\t\tthis.pseudoTrackers = {\r\n\t\t\t\"row\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"cell\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"group\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t\t\"column\":{\r\n\t\t\t\tsubscriber:null,\r\n\t\t\t\ttarget:null,\r\n\t\t\t},\r\n\t\t}\r\n\t\t\r\n\t\tthis.pseudoTracking = false;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\tthis.el = this.table.element;\r\n\t\t\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\t\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\t\t\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\t\t\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\t\r\n\tbindPseudoEvents(){\r\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\r\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\r\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\r\n\t\t});\r\n\t\t\r\n\t\tthis.pseudoTracking = true;\r\n\t}\r\n\t\r\n\tpseudoMouseEnter(key, e, target){\r\n\t\tif(this.pseudoTrackers[key].target !== target){\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.pseudoMouseLeave(key, e);\r\n\t\t\t\r\n\t\t\tthis.pseudoTrackers[key].target = target;\r\n\t\t\t\r\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpseudoMouseLeave(key, e){\r\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\r\n\t\tlinkedKeys = {\r\n\t\t\t\"row\":[\"cell\"],\r\n\t\t\t\"cell\":[\"row\"],\r\n\t\t};\r\n\t\t\r\n\t\tleaveList = leaveList.filter((item) => {\r\n\t\t\tvar links = linkedKeys[key];\r\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\tleaveList.forEach((key) => {\r\n\t\t\tvar target = this.pseudoTrackers[key].target;\r\n\t\t\t\r\n\t\t\tif(this.pseudoTrackers[key].target){\r\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\r\n\t\t\t\t\r\n\t\t\t\tthis.pseudoTrackers[key].target = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\t\t\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\t\t\t\t\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this))\r\n\t}\r\n\t\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\t\t\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\r\n\t\t\tthis.bindPseudoEvents();\r\n\t\t}\r\n\t\t\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\t\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\t\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t\t\r\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\r\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\t\t\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\t\t\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\t\t\t\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\t\t\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\t\t\t\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\r\n\t\t\t\t\t\t\ttargets[key] = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\t\t\t\t\t\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tif(targets[\"row\"] instanceof Row){\r\n\t\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t\t}else{\t\r\n\t\t\t\t\t\t\tif(targets[\"row\"]){\r\n\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?\")\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis.previousTargets = targetMatches;\r\n\t\t\r\n\t\treturn targets;\r\n\t}\r\n\t\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\t\t\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tclearWatchers(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\t\t\t\r\n\t\t\tif(listener.handler){\r\n\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\tlistener.handler = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFunctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\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?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.alertLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\r\n\t\t\t\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.clearAlert();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\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\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.alertError();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.clearAlert();\r\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\talertLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\r\n\t\t}\r\n\t}\r\n\r\n\talertError(){\r\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\tthis.table.alertManager.clear();\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(table, optionsList, debug){\r\n\t\tthis.table = table;\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this.table, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tthis.dispatch(\"layout-refreshing\")\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t\t\"counter\":{\r\n\t\t\t\t\"showing\": \"Showing\",\r\n\t\t\t\t\"of\": \"of\",\r\n\t\t\t\t\"rows\": \"rows\",\r\n\t\t\t\t\"pages\": \"pages\",\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\t\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\t\t\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\t\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\t\t\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\r\n\t\t\t\t\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\t\t\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\t\t\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tvar orderedStartMods = [],\r\n\t\t\torderedEndMods = [],\r\n\t\t\tunOrderedMods = [];\r\n\t\t\t\r\n\t\t\tthis.modules = {};\r\n\t\t\t\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\t\t\t\tlet module = new mod(this);\r\n\t\t\t\t\r\n\t\t\t\tthis.modules[name] = module;\r\n\t\t\t\t\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore.push(module);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(mod.moduleInitOrder){\r\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\r\n\t\t\t\t\t\t\torderedStartMods.push(module);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\torderedEndMods.push(module);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tunOrderedMods.push(module);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\r\n\t\t\t\r\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\r\n\t\t}\r\n\t}\r\n\t\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\t\t\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class Alert extends CoreFeature{\r\n constructor(table){\r\n super(table);\r\n \r\n this.element = this._createAlertElement();\r\n this.msgElement = this._createMsgElement();\r\n this.type = null;\r\n \r\n this.element.appendChild(this.msgElement);\r\n }\r\n \r\n _createAlertElement(){\r\n var el = document.createElement(\"div\");\r\n el.classList.add(\"tabulator-alert\");\r\n return el;\r\n }\r\n \r\n _createMsgElement(){\r\n var el = document.createElement(\"div\");\r\n el.classList.add(\"tabulator-alert-msg\");\r\n el.setAttribute(\"role\", \"alert\");\r\n return el;\r\n }\r\n \r\n _typeClass(){\r\n return \"tabulator-alert-state-\" + this.type;\r\n }\r\n \r\n alert(content, type = \"msg\"){\r\n if(content){\r\n this.clear();\r\n \r\n this.type = type;\r\n \r\n while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n \r\n this.msgElement.classList.add(this._typeClass());\r\n \r\n if(typeof content === \"function\"){\r\n content = content();\r\n }\r\n \r\n if(content instanceof HTMLElement){\r\n this.msgElement.appendChild(content);\r\n }else{\r\n this.msgElement.innerHTML = content;\r\n }\r\n \r\n this.table.element.appendChild(this.element);\r\n }\r\n }\r\n \r\n clear(){\r\n if(this.element.parentNode){\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n \r\n this.msgElement.classList.remove(this._typeClass());\r\n }\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport Alert from './tools/Alert.js';\r\n\r\nclass Tabulator {\r\n\t\r\n\tconstructor(element, options){\r\n\t\t\r\n\t\tthis.options = {};\r\n\t\t\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.alertManager = null; //hold Alert Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\r\n\t\t\r\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\t\t\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\r\n\t\t\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\t\t\r\n\t\tthis.initialized = false;\r\n\t\t\r\n\t\tif(this.initializeElement(element)){\r\n\t\t\t\r\n\t\t\tthis.initializeCoreSystems(options);\r\n\t\t\t\r\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\t\t\r\n\t\tTableRegistry.register(this); //register table for inter-device communication\r\n\t}\r\n\t\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\t\t\t\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tinitializeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\t\tthis.alertManager = new Alert(this);\r\n\t\t\r\n\t\tthis.bindModules();\r\n\t\t\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\t\t\r\n\t\tthis._clearObjectPointers();\r\n\t\t\r\n\t\tthis._mapDeprecatedFunctionality();\r\n\t\t\r\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\t\t\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\t\t\r\n\t\tthis.dataLoader.initialize();\r\n\t\t// this.columnManager.initialize();\r\n\t\t// this.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\t\r\n\t//convert deprecated functionality to new functions\r\n\t_mapDeprecatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\t\r\n\t_clearSelection(){\r\n\t\t\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\t\t\r\n\t\tif (window.getSelection) {\r\n\t\t\tif (window.getSelection().empty) { // Chrome\r\n\t\t\t\twindow.getSelection().empty();\r\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t}\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\t\t\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\t\r\n\t//create table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\t\t\r\n\t\tthis._rtlCheck();\r\n\t\t\r\n\t\tthis._buildElement();\r\n\t\t\r\n\t\tthis._initializeTable();\r\n\t\t\r\n\t\tthis._loadInitialData();\r\n\t\t\r\n\t\tthis.initialized = true;\r\n\t\t\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\t\r\n\t_rtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\t\t\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\t\t\t\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\t\t\r\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options,\r\n\t\tnewElement;\r\n\t\t\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\t\t\t\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\t\t\t\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\t\t\t\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\r\n\t\t\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\t\t\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\t\t\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\t\t\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\t\t\r\n\t\tthis.interactionMonitor.initialize();\r\n\t\t\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\t\t\r\n\t\tthis._detectBrowser();\r\n\t\t\r\n\t\t//initialize core modules\r\n\t\tthis.modulesCore.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t})\r\n\t\t\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\t\t\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\t\t\r\n\t\tif(options.autoColumns && options.data){\r\n\t\t\t\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\t\t\r\n\t\t//initialize regular modules\r\n\t\tthis.modulesRegular.forEach((mod) => {\r\n\t\t\tmod.initialize();\r\n\t\t});\r\n\t\t\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\t\t\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t}\r\n\t\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\t\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\t\t\r\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\r\n\t\t\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\t\t\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\t\t\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\t\t\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\t\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\t\t\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\t\t\r\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));\r\n\t}\r\n\t\r\n\tinitGuard(func, msg){\r\n\t\tvar stack, line;\r\n\t\t\r\n\t\tif(this.options.debugInitialization && !this.initialized){\r\n\t\t\tif(!func){\r\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\r\n\t\t\t\t\r\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\r\n\t\t\t\t\r\n\t\t\t\tif(line[0] == \" \"){\r\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\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 : \"\"));\r\n\t\t}\r\n\t\t\r\n\t\treturn this.initialized;\r\n\t}\r\n\t\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\t\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\t\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\r\n\t\t\r\n\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t}\r\n\t\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\t\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\t\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\t\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t}\r\n\t\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\tresponses++;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\taddData(data, pos, index){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t.then((rows) => {\r\n\t\t\t\t\tvar output = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tresolve(output);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\t\t\t\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\t\t\t\t\t\r\n\t\t\t\t\tresponses++;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\t\t\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\t\t\t\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\t\t\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\t\t\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\t\t\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\t\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t.then((rows)=>{\r\n\t\t\treturn rows[0].getComponent();\r\n\t\t});\r\n\t}\r\n\t\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\t\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn Promise.resolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\t\r\n\t}\r\n\t\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\t\t\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\r\n\t\t\r\n\t\tthis.columnManager.setColumns(definition);\r\n\t}\r\n\t\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\t\r\n\tgetColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\t\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field); \r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\t\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\t\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from),\r\n\t\ttoColumn = this.columnManager.findColumn(to);\r\n\t\t\r\n\t\tthis.initGuard();\r\n\t\t\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\t\t\t\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.columnManager.redraw(force);\r\n\t\tthis.rowManager.redraw(force);\r\n\t}\r\n\t\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\t\r\n\t//////////////////// Event Bus ///////////////////\r\n\t\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\t\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\t\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\t\t\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t//////////////////// Alerts ///////////////////\r\n\r\n\talert(contents, type){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.alertManager.alert(contents, type);\r\n\t}\r\n\r\n\tclearAlert(){\r\n\t\tthis.initGuard();\r\n\r\n\t\tthis.alertManager.clear();\r\n\t}\r\n\t\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\t\t\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\t\t\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;\r\n","export default class PseudoRow {\r\n\r\n\tconstructor (type){\r\n\t\tthis.type = type;\r\n\t\tthis.element = this._createElement();\r\n\t}\r\n\r\n\t_createElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetComponent(){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn {};\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.outerHeight;\r\n\t}\r\n\r\n\tinitialize(){}\r\n\r\n\treinitialize(){}\r\n\r\n\tnormalizeHeight(){}\r\n\r\n\tgenerateCells(){}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n}"],"names":["CoreFeature","[object Object]","table","this","data","silent","dataLoader","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","options","value","module","Helpers","el","offsetWidth","offsetHeight","box","getBoundingClientRect","top","window","pageYOffset","document","documentElement","clientTop","left","pageXOffset","clientLeft","obj","clone","list","objectProto","__proto__","arrayProto","i","Object","assign","Array","isArray","match","copy","subject","findIndex","item","unshift","deepClone","Popup","element","parent","super","container","_lookupContainer","reversedX","childPopup","blurable","blurCallback","renderedCallback","visible","classList","add","blurEvent","hide","escEvent","_escapeCheck","popupContainer","querySelector","console","warn","_checkContainerIsParent","body","parentNode","callback","e","touch","MouseEvent","x","touches","pageX","y","pageY","parentOffset","elOffset","position","containerOffset","offset","origin","parentEl","coords","HTMLElement","elementPositionCoords","containerEventCoords","style","appendChild","_fitToScreen","scrollTop","right","Math","max","scrollHeight","parseInt","setTimeout","rowManager","addEventListener","keyCode","removeEventListener","removeChild","Module","name","_handler","optionsList","register","columnManager","func","args","initGuard","component","handler","componentFunctionBinder","priority","registerDataPipelineHandler","registerDisplayPipelineHandler","renderInPosition","refreshActiveData","footerManager","append","prepend","remove","menuEl","menuContainer","content","type","alertManager","alert","clear","Accessor","allowedTypes","registerColumnOption","initializeColumn","transformRow","column","config","forEach","accessor","charAt","toUpperCase","slice","definition","lookupAccessor","params","accessors","row","rowComponent","getComponent","traverse","colCompnent","getFieldValue","setFieldValue","moduleName","generateParamsList","prefix","output","concat","push","serializeParams","encoded","encodeURIComponent","join","url","keys","length","method","toLowerCase","includes","json","headers","Content-Type","JSON","stringify","form","FormData","Ajax","urlGenerator","loaderPromise","registerTableOption","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxURL","setUrl","setDefaultConfig","ajaxConfig","registerTableFunction","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","genereateHTMLTable","generatePlainContent","clipboardData","setData","originalEvent","dispatchExternal","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","checkPaseOrigin","getPasteData","modExists","mutateData","mutator","valid","target","tagName","edit","currentCell","getData","replace","update","updateOrAddData","insert","addData","headerFindSuccess","columnMap","split","find","title","trim","field","columnsByIndex","shift","CalcComponent","_row","Proxy","get","receiver","handle","transform","getElement","cells","getCells","cell","getCell","CellComponent","_cell","getValue","getOldValue","initialValue","getField","mutate","setValue","setValueActual","checkHeight","Cell","oldValue","height","width","minWidth","loaded","build","generateElement","setWidth","_configureCell","createElement","className","setAttribute","textAlign","hozAlign","vertAlign","display","alignItems","bottom","middle","justifyContent","center","cssClass","val","innerHTML","Node","firstChild","containerOnly","layoutElement","force","setValueProcessData","cellRendered","cellEdited","subscribedExternal","changed","_generateContents","widthStyled","minWidthStyled","maxWidth","maxWidthStyled","reinitializeHeight","heightStyled","redrawBlock","deleteCell","calcs","getCellIndex","ColumnComponent","_column","getDefinition","getTitleDownload","isGroup","show","delete","Column","scrollToColumn","to","after","toColumn","findColumn","moveColumn","nextCol","nextColumn","prevCol","prevColumn","updates","updateDefinition","getWidth","result","reinitializeWidth","renderer","rerenderColumns","maxInitialWidth","variableHeight","headerVertical","headerHozAlign","editableTitle","def","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleDownload","titleFormatterRendered","mapDefinitions","setField","widthFixed","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","bindModuleColumns","defaults","columnDefaults","generate","defaultOptionList","indexOf","nestedFieldSeparator","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","dblTap","tapHold","tap","headerClick","headerDblClick","headerContext","passive","headerTap","clearTimeout","headerDblTap","headerTapHold","setMinWidth","setMaxWidth","_buildColumnHeaderTitle","langBind","contents","structure","dataObj","paddingTop","colDefs","childWidth","heightInitialized","index","setTo","active","manualHeight","outerHeight","initialized","created","maxHeight","tempData","updatedData","findCell","moveRowActual","blockRedraw","detatchModules","values","topCalcs","botCalcs","genColumn","topElement","botElement","topRow","botRow","topInitialized","initializeColumnCheck","tableRedraw","recalcRowGroup","recalcAll","groupBy","columnCalcs","topCalcParams","botCalcParams","calculations","botInitialized","footerPrepend","generateRow","group","updateData","dataTreeChildColumnCalcs","children","pos","format","formatter","paramKey","results","subGroups","getSubGroups","subGroupResults","groupObj","ColumnCalcs","indent","collapseEl","expandEl","branchEl","registerComponentFunction","expandRow","dataTreeChildField","dummyEl","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","rowDelete","layoutRow","childArray","dataTree","open","controlEl","child","cloneNode","stopPropagation","oldControl","create","allChildren","childData","childRow","collapseRow","Row","initializeRow","defaultDownloaders","csv","setFileContents","fileContents","depth","jsonLines","pdf","header","autoTableParams","fontStyle","fontSize","cellPadding","fillColor","jsPDFParams","colSpan","rowSpan","doc","head","xlsx","sheetName","workbook","utils","tableFeatures","generateSheet","merges","worksheet","SheetNames","sheet","buf","s","Uint8Array","download","downloadFunc","triggerDownload","interceptCallback","groupHeader","blob","Blob","navigator","maskInput","maskLetter","maskLetterChar","maskNumber","symbol","char","isNaN","Download","editor","displayItems","focusedItem","listEl","initialValues","isFilter","filterTimeout","typing","popup","listIteration","cellEl","input","padding","autocomplete","attribs","valueCheck","verticalNavigation","placeholderLoading","filterDelay","emptyValue","stopImmediatePropagation","_focusItem","_chooseItem","_generateOptions","_sortOptions","itteration","_ajaxRequest","valuesURL","placeholder","label","itemParams","elementAttributes","selected","level","sorter","as","bs","a","String","b","rd","rx","L","a1","isFinite","emptyAlign","filtered","matches","option","term","_clearList","itemFormatter","_groupClick","_styleItem","currentItems","onRendered","editorParams","cellValue","cancel","vertNav","boxSizing","onChange","blurFunc","star","maxStars","size","stars","starChange","nextStar","success","starsHolder","whiteSpace","verticalAlign","getAttribute","progress","min","percent","bar","calcVal","backgroundColor","mouseDrag","mouseDragWidth","updateValue","tristate","indetermValue","indetermState","falseValueSet","checkedValue","trueValue","falseValue","browser","mouseClick","recursionBlock","editedCells","editors","navigatePrev","navigateNext","keybindingNavigateNext","newRow","addRow","nextCell","prevRow","nextRow","allowEdit","elVisible","prevCell","clearEditor","button","self","forceEdit","getRenderMode","bottomEdge","rowEl","rightEdge","leftEdge","renderHorizontal","scrollLeft","rendered","cancelEdit","editIndex","Edit$1","ExportRow","ExportColumn","colVisProp","cloneTableStyle","getDisplayRows","groupData","maxDepth","exportRows","headerDepth","headerEl","bodyEl","styles","setup","rowFormatter","oddRow","evenRow","calcRow","styleCells","getElementsByClassName","mapElementStyles","treeElementField","holder","genereateTableElement","background-color","color","font-weight","font-family","font-size","text-align","border-top","border-left","border-right","border-bottom","padding-top","padding-left","padding-right","getComputedStyle","Export","filterParams","rowVal","filterVal","filterList","headerFilterColumns","prevHeaderFilterChangeCheck","tableInitialized","userSetFilter","userSetHeaderFilterFocus","userRemoveFilter","initialHeaderFilter","getHeaderFilterValue","filterChangeCheck","filter","prevSuccess","Filter","filterFunc","attrType","filterElement","getColumn","normalizeHeight","typingTimer","headerFilterLiveFilterDelay","headerFilter","editorElement","filterMode","ajax","headerFilters","activeRows","getFilters","plaintext","textarea","money","number","sign","decimalSym","thousandSym","negativeSign","integer","link","urlPrefix","formatterParams","image","tickCross","empty","truthy","tick","tickElement","datetime","DT","inputFormat","newDatetime","setZone","invalid","datetimediff","invalidPlaceholder","suffix","unit","lookup","traffic","percentValue","round","colors","floor","legend","legendColor","barEl","barContainer","legendEl","legendAlign","holderEl","buttonTick","buttonCross","rownum","checkbox","selectRow","Format","formatters","entityMap","&","<",">","\"","'","/","leftColumns","rightColumns","leftMargin","rightMargin","rightPadding","initializationMode","scrollEndTimer","layoutCell","groups","leftParents","headersElement","frozen","margin","allCells","calcMargins","visibleRows","paddingLeft","FrozenColumns","refreshData","FrozenRows","GroupComponent","_group","Group","groupManager","hasSubGroups","old","groupList","generator","elementContents","createElements","createValueGroups","arrow","groupKey","groupID","toIndex","generateGroupHeaderContents","marginLeft","noCalc","_visSet","getHeadersAndRows","prev","compoment","groupIDLookups","startOpen","headerGenerator","displayHandler","userGetGroupedData","configureGroupSetup","wipe","rowMoving","groupStartOpen","prevValue","groupRows","moveRowInArray","prevDisplayRow","from","generateGroups","updateGroupRows","groupComponents","headerContent","groupListData","oldGroups","oldRowGroup","groupId","GroupRows","cellUpdated","rowMoved","getRowPosition","history","History","oldRow","rowAdd","deleteActual","_rebindRow","rowMove","hasIndex","originalElement","_extractOptions","fieldIndex","HtmlTableImport","inQuote","importFormat","importer","extension","pickFile","importData","onerror","parsedData","Import","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellClick","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerMouseEnter","headerMouseLeave","headerMouseMove","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","subscribers","touchSubscribers","touchWatchers","tapDbl","added","eventMap","subscribeTouchEvents","subscriptionChanged","watchers","Interaction","Keybindings","watchKeys","pressedKeys","mergedBindings","actions","bindings","meta","binding","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","undo","scrollToRow","focus","Menu","rootPopup","columnSubscribers","rowClickMenu","headerContextMenu","initializeColumnHeaderMenu","contextMenu","icon","headerMenu","menu","loadMenu","parentPopup","nestedMenuBlock","itemEl","MoveColumns","placeholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","startX","autoScrollMargin","autoScrollTimeout","colEl","nextColWidthLast","prevColWidth","startXMove","moveToCol","nextColWidth","headerElement","clientHeight","toColAfter","_unbindMouseMove","xPos","MoveRows","toRow","toRowAfter","hasHandle","moveHover","endMove","tableRowDropEvent","touchMove","connection","connectionSelectorsTables","connectionElements","connections","connectedTable","connectedRow","movableRowsConnectedTables","connectionSelectorsElements","mousemove","insertBefore","nextSibling","moveRow","tableRowDrop","which","rowHandle","nextRowHeight","diff","startYMove","moveToRow","nextRowHeightLast","setStartPosition","yPos","connectionTables","commsConnections","prototype","fromRow","Mutator","enabled","transformCell","linkCell","ofEl","showingEl","rowsEl","totalRows","valueEl","totalEl","Page","progressiveLoad","pageCounterElement","page","count","displayIndex","initialLoad","dataChanging","pageSizes","setMaxPage","calculatePageSizes","registerDisplayHandler","initializePageCounter","remotePageParams","dispRows","paginationSize","testElRow","testElCell","setPageToRow","firstBut","nextBut","paginationSizeSelector","pageCounter","pageSelectLabel","prevBut","setPage","previousPage","nextPage","paginationElement","pageSizeSelect","lastBut","rowCount","currentRow","rightSize","disabled","end","_setPageButtons","actualStartRow","scrollHorizontal","cookie","cookiePos","localStorage","expireDate","setDate","Persistence","id","defWatcherBlock","persistence","readers","readFunc","persistenceWriterFunc","retreiveData","retreivedData","sort","sorters","initialSort","props","mergeDefinition","current","oldCols","parseColumns","validateSorters","writeFunc","definitions","defStore","moduleInitOrder","Popup$1","initializeRowWatchers","initializeGroupWatchers","headerPopupEl","contentsEl","Print","manualBlock","scrollY","tableEl","printHeader","footerContent","scrollX","ReactiveData","origFuncs","currentVersion","version","defineProperty","pop","splice","childField","configurable","apply","getOwnPropertyDescriptor","ResizeColumns","startColumn","startWidth","deInitializeComponent","nearestColumn","initialNextColumn","handleDown","resize","parentElement","mouseMove","mouseUp","ResizeRows","prevHandle","observer","autoResize","containerHeight","containerWidth","tableHeight","browserMobile","ResizeTable","ResponsiveLayout","hiddenColumns","collapseStartOpen","responsiveLayout","collapseHandleColumn","generateCollapsedRowContent","colCount","working","titleHighlight","text","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","toggleRow","shiftKey","rowIdx","fromRowIdx","deselectRows","toggledRows","_rowSelectionChanged","_selectRow","rowInfo","selectedRows","datetime$1","DateTime","isDateTime","fromISO","fromFormat","decimalSeparator","thousandSeparator","string","langLocale","boolean","d","c","calc","alignEmptyValues","aRow","b1","sortList","tableBuilt","setSort","dir","startingDir","columnHeaderSortMulti","rowComponents","sortMode","sortObj","_sortItems","el1Comp","el2","Sort","Tooltip","tooltipSubscriber","headerSubscriber","tooltip","clearPopup","popupInstance","Number","float","parameters","ends","Validate","clearValidation","columnValidate","validate","_buildValidator","validators","validationMode","invalidIndex","invalidCells","ResponsiveLayoutModule","SelectRowModule","SortModule","TooltipModule","ifVisible","rowIndex","elementVertical","VirtualDomHorizontal","rightCol","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","isFitData","scroll","cols","colPos","reinitChanged","change","layoutRefresh","removeColRight","fitDataColActualWidthCheck","changes","widthDiff","newWidth","ColumnManager","blockHozScrollEvent","renderClass","renderers","redraw","nextToColumn","parentIndex","nextEl","minHeight","verticalAlignHeaders","updateRows","fromIndex","adjust","offsetLeft","reinitialize","BaiscVertical","VirtualDomVertical","vDomRowHeight","vDomTop","vDomScrollPosBottom","vDomBottomPad","paddingBottom","topOffset","deinitializeHeight","_addBottomRow","bottomDiff","topPad","heightOccupied","vDomWindowBuffer","fillableSpace","getHeight","vDomScrollPosTop","removableRows","vDomBottom","RowManager","tableElement","heightFixer","placeholderContents","firstRender","renderMode","displayRows","displayRowsCount","rowNumColumn","initializePlaceholder","initializeRenderer","_positionPlaceholder","activeIndex","displayRowIterator","regenerateRowNumbers","_clearPlaceholder","setActiveRows","findRowIndex","getRows","skipStage","stage","renderColumns","dataPipeline","displayPipeline","basic","fixedHeight","_clearTable","renderEmptyScroll","_showPlaceholder","otherHeight","redrawBlockRestoreConfig","renderTable","containerElement","InteractionManager","tabulator-cell","subscriber","listenerMap","components","pseudoTrackers","pseudoMouseEnter","pseudoMouseLeave","linkedKeys","listeners","listener","targets","previousTargets","funcName","DataLoader","debug","subscriptionNotifiers","events","_notifiySubscriptionChange","confirmed","notifiers","_confirm","TableRegistry","lastCol","flexGrowUnits","remainingSpace","changeUnits","calcShrink","remainingFlexGrowUnits","shrinkCols","oversizeCols","oversizeSpace","freeSpace","fixedWidth","fixedShrinkColumns","flexColWidth","flexColumns","Layout","Localize","lang","_setLangProp","langList","desiredLocale","locale","path","trans","root","rootPath","items","loading","page_size","next","next_title","all","Comms","con","coreModules","tabulator","registerModule","bindModules","moduleBindings","mod","orderedStartMods","msgElement","Tabulator","vdomHoz","interactionMonitor","ComponentFunctionBinder","initialize","_loadInitialData","attributes","setColumns","ua","Error","responses","parse","findRow","foundRows","plugin","debugEventsExternal","debugInvalidOptions","columnHeaderVertAlign","autoColumns","addRowPos","headerVisible","renderVerticalBuffer","scrollToRowPosition","scrollToColumnIfVisible","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","rowHeight","dataLoaderError","ModuleBinder"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e1ed12efb..e6175ff9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "tabulator-tables", - "version": "5.1.7", + "version": "5.2.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -997,6 +997,97 @@ "to-fast-properties": "^2.0.0" } }, + "@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, + "requires": { + "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" + }, + "dependencies": { + "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 + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "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, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "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, + "requires": { + "argparse": "^2.0.1" + } + }, + "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 + } + } + }, + "@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, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@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 + }, "@nodelib/fs.scandir": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", @@ -1097,6 +1188,18 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "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 + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1949,6 +2052,12 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "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 + }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -1991,6 +2100,15 @@ "path-type": "^4.0.0" } }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -2120,12 +2238,276 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "eslint": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", + "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "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 + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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 + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + }, + "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, + "requires": { + "is-glob": "^4.0.3" + }, + "dependencies": { + "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, + "requires": { + "is-extglob": "^2.1.1" + } + } + } + }, + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "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, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "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, + "requires": { + "argparse": "^2.0.1" + } + }, + "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 + }, + "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, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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 + }, + "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, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "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, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "requires": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "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, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, "estree-walker": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", @@ -2182,6 +2564,12 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "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 + }, "fastq": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", @@ -2191,6 +2579,15 @@ "reusify": "^1.0.4" } }, + "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, + "requires": { + "flat-cache": "^3.0.4" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2210,6 +2607,22 @@ "pinkie-promise": "^2.0.0" } }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -2267,6 +2680,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "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 + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -2546,6 +2965,12 @@ } } }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -2833,6 +3258,12 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "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 + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -2878,6 +3309,16 @@ "verror": "1.10.0" } }, + "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, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -2955,6 +3396,12 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "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 + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -3066,9 +3513,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "minipass": { @@ -3123,6 +3570,12 @@ "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, + "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-gyp": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", @@ -3325,6 +3778,20 @@ "wrappy": "1" } }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "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" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -4838,6 +5305,12 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, + "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 + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -4972,6 +5445,12 @@ "@babel/runtime": "^7.8.4" } }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, "regexpu-core": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", @@ -5586,6 +6065,12 @@ "get-stdin": "^4.0.1" } }, + "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 + }, "style-inject": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", @@ -5713,6 +6198,12 @@ } } }, + "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 + }, "timsort": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", @@ -5774,6 +6265,21 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "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, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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 + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -5880,6 +6386,12 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, + "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 + }, "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", @@ -5931,6 +6443,12 @@ "string-width": "^1.0.2 || 2" } }, + "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 + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", diff --git a/package.json b/package.json index 9773a20e4..709630b6c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tabulator-tables", - "version": "5.1.7", + "version": "5.2.2", "description": "Interactive table generation JavaScript library", "style": "dist/css/tabulator.css", "main": "dist/js/tabulator.js", @@ -10,6 +10,7 @@ "**/*.scss" ], "scripts": { + "lint": "eslint src", "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", @@ -51,6 +52,8 @@ "@babel/preset-env": "^7.12.11", "@rollup/plugin-babel": "^5.2.2", "@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": "^5.0.0", diff --git a/src/js/core/FooterManager.js b/src/js/core/FooterManager.js index 41dc5eae5..7f5f2d472 100644 --- a/src/js/core/FooterManager.js +++ b/src/js/core/FooterManager.js @@ -9,7 +9,6 @@ export default class FooterManager extends CoreFeature{ this.element = this.createElement(); //containing element this.containerElement = this.createContainerElement(); //containing element this.external = false; - this.links = []; } initialize(){ @@ -59,15 +58,15 @@ export default class FooterManager extends CoreFeature{ return this.element; } - append(element, parent){ - this.activate(parent); + append(element){ + this.activate(); this.containerElement.appendChild(element); this.table.rowManager.adjustTableSize(); } - prepend(element, parent){ - this.activate(parent); + prepend(element){ + this.activate(); this.element.insertBefore(element, this.element.firstChild); this.table.rowManager.adjustTableSize(); @@ -87,7 +86,7 @@ export default class FooterManager extends CoreFeature{ } } - activate(parent){ + activate(){ if(!this.active){ this.active = true; if(!this.external){ @@ -95,15 +94,9 @@ export default class FooterManager extends CoreFeature{ this.table.element.style.display = ''; } } - - if(parent){ - this.links.push(parent); - } } redraw(){ - this.links.forEach(function(link){ - link.footerRedraw(); - }); + this.dispatch("footer-redraw") } } \ No newline at end of file diff --git a/src/js/core/Module.js b/src/js/core/Module.js index bd8c8aeee..5a797f7b4 100644 --- a/src/js/core/Module.js +++ b/src/js/core/Module.js @@ -1,4 +1,5 @@ import CoreFeature from './CoreFeature.js'; +import Popup from './tools/Popup.js'; class Module extends CoreFeature{ @@ -26,12 +27,16 @@ class Module extends CoreFeature{ } /////////////////////////////////// - /// Public Function Registation /// + /// Public Function Registration /// /////////////////////////////////// registerTableFunction(name, func){ if(typeof this.table[name] === "undefined"){ - this.table[name] = func; + this.table[name] = (...args) => { + this.table.initGuard(name); + + return func(...args); + } }else{ console.warn("Unable to bind table function, name already in use", name) } @@ -64,6 +69,43 @@ class Module extends CoreFeature{ 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/src/js/core/Tabulator.js b/src/js/core/Tabulator.js index 3cecbef5b..8b023fb64 100644 --- a/src/js/core/Tabulator.js +++ b/src/js/core/Tabulator.js @@ -18,15 +18,18 @@ import ModuleBinder from './tools/ModuleBinder.js'; import OptionsList from './tools/OptionsList.js'; -class Tabulator { +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 @@ -36,38 +39,38 @@ class Tabulator { 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.optionsList = new OptionsList(this, "table constructor"); - + this.initialized = 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{ @@ -79,223 +82,224 @@ class Tabulator { 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(); - } + 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); } - + //deconstructor destroy(){ var element = this.element; - + TableRegistry.deregister(this); //deregister table from inter-device communication - + this.eventBus.dispatch("table-destroy"); - + //clear row data this.rowManager.rows.forEach(function(row){ row.wipe(); }); - + this.rowManager.rows = []; this.rowManager.activeRows = []; this.rowManager.displayRows = []; - + //clear DOM while(element.firstChild) element.removeChild(element.firstChild); element.classList.remove("tabulator"); } - + _detectBrowser(){ var ua = navigator.userAgent||navigator.vendor||window.opera; - + if(ua.indexOf("Trident") > -1){ this.browser = "ie"; this.browserSlow = true; @@ -309,179 +313,197 @@ class Tabulator { 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(); + return this.rowManager.blockRedraw(); } - + //restore table redrawing restoreRedraw(){ + this.initGuard(); + return this.rowManager.restoreRedraw(); } - + //load data setData(data, params, config){ - if(this.initialized){ - return this.dataLoader.load(data, params, config, false); - }else{ - console.warn("setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.") - } + 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){ - if(this.initialized){ - return this.dataLoader.load(data, params, config, true, true); - }else{ - console.warn("replaceData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + this.initGuard(); + + return this.dataLoader.load(data, params, config, true, true); } - + //update table data updateData(data){ var responses = 0; - - if(this.initialized){ - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - if(row){ - responses++; - - row.updateData(item) - .then(()=>{ - responses--; - - if(!responses){ - resolve(); - } - }); - } - }); - }else{ - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - }else{ - console.warn("updateData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + + this.initGuard(); + + return new Promise((resolve, reject) => { + this.dataLoader.blockActiveLoad(); + + if(typeof data === "string"){ + data = JSON.parse(data); + } + + if(data){ + data.forEach((item) => { + var row = this.rowManager.findRow(item[this.options.index]); + + if(row){ + responses++; + + row.updateData(item) + .then(()=>{ + responses--; + + if(!responses){ + resolve(); + } + }); + } + }); + }else{ + console.warn("Update Error - No data provided"); + reject("Update Error - No data provided"); + } + }); } - + addData(data, pos, index){ - if(this.initialized){ - 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); + 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()); }); - }else{ - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - }else{ - console.warn("addData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + + 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; - - if(this.initialized){ - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data){ - 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"); - } - }); - }else{ - console.warn("updateOrAddData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } + + this.initGuard(); + + return new Promise((resolve, reject) => { + this.dataLoader.blockActiveLoad(); + + if(typeof data === "string"){ + data = JSON.parse(data); + } + + if(data){ + 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{ @@ -489,11 +511,11 @@ class Tabulator { return false; } } - + //get row object getRowFromPosition(position, active){ var row = this.rowManager.getRowFromPosition(position, active); - + if(row){ return row.getComponent(); }else{ @@ -501,19 +523,21 @@ class Tabulator { 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{ @@ -522,46 +546,46 @@ class Tabulator { break; } } - + //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){ - if(this.initialized){ - if(typeof data === "string"){ - data = JSON.parse(data); - } - - return this.rowManager.addRows(data, pos, index) - .then((rows)=>{ - return rows[0].getComponent(); - }); - }else{ - console.warn("addRow failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); + this.initGuard(); + + if(typeof data === "string"){ + data = JSON.parse(data); } + + return this.rowManager.addRows(data, pos, index) + .then((rows)=>{ + return rows[0].getComponent(); + }); } - + //update a row if it exitsts 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(()=>{ @@ -574,15 +598,17 @@ class Tabulator { }) } } - + //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(()=>{ @@ -593,11 +619,11 @@ class Tabulator { 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{ @@ -605,25 +631,27 @@ class Tabulator { 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); + return this.rowManager.getComponents(active); } - + //get position of row in table getRowPosition(index, active){ var row = this.rowManager.findRow(index); - + if(row){ return this.rowManager.getRowPosition(row, active); }else{ @@ -631,38 +659,38 @@ class Tabulator { return false; } } - + /////////////// Column Functions /////////////// setColumns(definition){ - if(this.initialized){ - this.columnManager.setColumns(definition); - }else{ - console.warn("setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.") - } + 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 col = this.columnManager.findColumn(field); - - if(col){ - return col.getComponent(); + 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{ @@ -670,10 +698,12 @@ class Tabulator { return false; } } - + hideColumn(field){ - var column = this.columnManager.findColumn(field); - + var column = this.columnManager.findColumn(field); + + this.initGuard(); + if(column){ column.hide(); }else{ @@ -681,10 +711,12 @@ class Tabulator { return false; } } - + toggleColumn(field){ var column = this.columnManager.findColumn(field); - + + this.initGuard(); + if(column){ if(column.visible){ column.hide(); @@ -696,19 +728,23 @@ class Tabulator { 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{ @@ -716,10 +752,12 @@ class Tabulator { return Promise.reject(); } } - + updateColumnDefinition(field, definition){ var column = this.columnManager.findColumn(field); - + + this.initGuard(); + if(column){ return column.updateDefinition(definition) }else{ @@ -727,11 +765,13 @@ class Tabulator { return Promise.reject(); } } - + moveColumn(from, to, after){ - var fromColumn = this.columnManager.findColumn(from); - var toColumn = this.columnManager.findColumn(to); - + var fromColumn = this.columnManager.findColumn(from), + toColumn = this.columnManager.findColumn(to); + + this.initGuard(); + if(fromColumn){ if(toColumn){ this.columnManager.moveColumn(fromColumn, toColumn, after) @@ -742,12 +782,12 @@ class Tabulator { 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{ @@ -756,42 +796,54 @@ class Tabulator { } }); } - + //////////// General Public Functions //////////// //redraw list without updating data redraw(force){ - if(this.initialized){ - this.columnManager.redraw(force); - this.rowManager.redraw(force); - }else{ - console.warn("redraw failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function."); - } - } + 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(); } - + //////////////////// Event Bus /////////////////// - + on(key, callback){ this.externalEvents.subscribe(key, callback); } - + off(key, callback){ this.externalEvents.unsubscribe(key, callback); } - + dispatchEvent(){ var args = Array.from(arguments), key = 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]){ @@ -803,14 +855,14 @@ class Tabulator { return false; } } - + module(key){ var mod = this.modules[key]; - + if(!mod){ console.error("Tabulator module not installed: " + key); } - + return mod; } } diff --git a/src/js/core/cell/Cell.js b/src/js/core/cell/Cell.js index 7b3682dfd..49f64799c 100644 --- a/src/js/core/cell/Cell.js +++ b/src/js/core/cell/Cell.js @@ -85,13 +85,6 @@ export default class Cell extends CoreFeature{ }); } - //update tooltip on mouse enter - if (this.table.options.tooltipGenerationMode === "hover"){ - element.addEventListener("mouseenter", (e) => { - this._generateTooltip(); - }); - } - this.dispatch("cell-init", this); //hide cell if not visible @@ -137,31 +130,6 @@ export default class Cell extends CoreFeature{ this.dispatch("cell-rendered", this); } - //generate tooltip text - _generateTooltip(){ - var tooltip = this.column.tooltip; - - if(tooltip){ - if(tooltip === true){ - tooltip = this.value; - }else if(typeof(tooltip) == "function"){ - tooltip = tooltip(this.getComponent()); - - if(tooltip === false){ - tooltip = ""; - } - } - - if(typeof tooltip === "undefined"){ - tooltip = ""; - } - - this.element.setAttribute("title", tooltip); - }else{ - this.element.setAttribute("title", ""); - } - } - //////////////////// Getters //////////////////// getElement(containerOnly){ if(!this.loaded){ @@ -183,8 +151,8 @@ export default class Cell extends CoreFeature{ } //////////////////// Actions //////////////////// - setValue(value, mutate){ - var changed = this.setValueProcessData(value, mutate); + setValue(value, mutate, force){ + var changed = this.setValueProcessData(value, mutate, force); if(changed){ this.dispatch("cell-value-updated", this); @@ -203,10 +171,10 @@ export default class Cell extends CoreFeature{ } } - setValueProcessData(value, mutate){ + setValueProcessData(value, mutate, force){ var changed = false; - if(this.value !== value){ + if(this.value !== value || force){ changed = true; @@ -242,7 +210,6 @@ export default class Cell extends CoreFeature{ layoutElement(){ this._generateContents(); - this._generateTooltip(); this.dispatch("cell-layout", this); } @@ -279,11 +246,15 @@ export default class Cell extends CoreFeature{ 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.element.style.height = this.row.heightStyled; + + this.dispatch("cell-height", this, this.row.heightStyled); } getHeight(){ diff --git a/src/js/core/column/Column.js b/src/js/core/column/Column.js index d78a71deb..9c042bee7 100644 --- a/src/js/core/column/Column.js +++ b/src/js/core/column/Column.js @@ -20,7 +20,6 @@ class Column extends CoreFeature{ this.titleElement = false; this.groupElement = this.createGroupElement(); //column group holder element this.isGroup = false; - this.tooltip = false; //hold column tooltip this.hozAlign = ""; //horizontal text alignment this.vertAlign = ""; //vert text alignment @@ -145,39 +144,6 @@ class Column extends CoreFeature{ //all previously deprecated functionality removed in the 5.0 release } - setTooltip(){ - var def = this.definition; - - //set header tooltips - var tooltip = def.headerTooltip; - - if(tooltip){ - if(tooltip === true){ - if(def.field){ - this.langBind("columns|" + def.field, (value) => { - this.element.setAttribute("title", value || def.title); - }); - }else{ - this.element.setAttribute("title", def.title); - } - - }else{ - if(typeof(tooltip) == "function"){ - tooltip = tooltip(this.getComponent()); - - if(tooltip === false){ - tooltip = ""; - } - } - - this.element.setAttribute("title", tooltip); - } - - }else{ - this.element.setAttribute("title", ""); - } - } - //build header element _initialize(){ var def = this.definition; @@ -204,14 +170,7 @@ class Column extends CoreFeature{ this._buildColumnHeader(); } - this.setTooltip(); - this.dispatch("column-init", this); - - //update header tooltip on mouse enter - this.element.addEventListener("mouseenter", (e) => { - this.setTooltip(); - }); } _bindEvents(){ @@ -332,9 +291,6 @@ class Column extends CoreFeature{ this.reinitializeWidth(); - //set tooltip if present - this.tooltip = this.definition.tooltip; - //set orizontal text alignment this.hozAlign = this.definition.hozAlign; this.vertAlign = this.definition.vertAlign; @@ -510,6 +466,8 @@ class Column extends CoreFeature{ 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"); } @@ -524,6 +482,8 @@ class Column extends CoreFeature{ 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"; } @@ -552,6 +512,8 @@ class Column extends CoreFeature{ this.columns.forEach(function(column){ column.clearVerticalAlign(); }); + + this.dispatch("column-height", this, ""); } bindModuleColumns (){ @@ -901,6 +863,8 @@ class Column extends CoreFeature{ if(this.titleFormatterRendered){ this.titleFormatterRendered(); } + + this.dispatch("column-rendered", this); } //////////////// Cell Management ///////////////// diff --git a/src/js/core/column/defaults/options.js b/src/js/core/column/defaults/options.js index c806c16d5..abc0a3d48 100644 --- a/src/js/core/column/defaults/options.js +++ b/src/js/core/column/defaults/options.js @@ -9,10 +9,8 @@ export default { "minWidth": 40, "maxWidth": undefined, "maxInitialWidth": undefined, - "tooltip": undefined, "cssClass": undefined, "variableHeight": undefined, - "headerTooltip": undefined, "headerVertical": undefined, "headerHozAlign": undefined, "editableTitle": undefined, diff --git a/src/js/core/defaults/options.js b/src/js/core/defaults/options.js index 51b2d1cdb..f062c6c9a 100644 --- a/src/js/core/defaults/options.js +++ b/src/js/core/defaults/options.js @@ -3,6 +3,7 @@ export default { debugEventsExternal:false, //flag to console log events debugEventsInternal:false, //flag to console log events debugInvalidOptions:true, //allow toggling of invalid option warnings + debugInitialization:true, //allow toggling of invalid option warnings height:false, //height of tabulator minHeight:false, //minimum height of tabulator @@ -10,6 +11,8 @@ export default { columnHeaderVertAlign:"top", //vertical alignment of column headers + popupContainer:false, + columns:[],//store for colum header info columnDefaults:{}, //store column default props @@ -20,8 +23,6 @@ export default { nestedFieldSeparator:".", //separator for nested data - tooltipGenerationMode:"load", //when to generate tooltips - footerElement:false, //hold footer element index:"id", //filed for row index @@ -47,6 +48,8 @@ export default { rowFormatterClipboard:null, rowFormatterHtmlOutput:null, + rowHeight:null, + placeholder:false, dataLoader:true, diff --git a/src/js/core/modules/optional.js b/src/js/core/modules/optional.js index b74230ad1..04b309319 100644 --- a/src/js/core/modules/optional.js +++ b/src/js/core/modules/optional.js @@ -22,6 +22,7 @@ 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'; @@ -30,4 +31,5 @@ export {default as ResizeTableModule} from '../../modules/ResizeTable/ResizeTabl 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 TooltipModule} from '../../modules/Tooltip/Tooltip.js'; export {default as ValidateModule} from '../../modules/Validate/Validate.js'; \ No newline at end of file diff --git a/src/js/core/row/Row.js b/src/js/core/row/Row.js index f9010e2a7..42254d92b 100644 --- a/src/js/core/row/Row.js +++ b/src/js/core/row/Row.js @@ -5,7 +5,7 @@ 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 @@ -15,247 +15,256 @@ export default class Row extends CoreFeature{ this.height = 0; //hold element height this.heightStyled = ""; //hold element height prestyled to improve render efficiency this.manualHeight = false; //user has manually set row height - this.outerHeight = 0; //holde lements outer 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.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){ 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); - + 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); } } - + 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 = 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); + minHeight; + + if(this.table.options.rowHeight){ + this.height = this.table.options.rowHeight; }else{ - this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight); + 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){ + 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 (var attrname in newRowData) { this.data[attrname] = newRowData[attrname]; } - + this.dispatch("row-data-save-after", this); - + //update affected cells only for (var 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(); } @@ -263,11 +272,11 @@ export default class Row extends CoreFeature{ } }); } - + //Partial reinitialization if visible if(visible){ this.normalizeHeight(true); - + if(this.table.options.rowFormatter){ this.table.options.rowFormatter(this.getComponent()); } @@ -276,78 +285,78 @@ export default class Row extends CoreFeature{ 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.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.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); @@ -355,70 +364,70 @@ export default class Row extends CoreFeature{ console.warn("Move Error - No matching row found:", to); } } - + ///////////////////// Actions ///////////////////// delete(){ this.dispatch("row-delete", this); - + this.deleteActual(); - + return Promise.resolve(); } - + deleteActual(blockRedraw){ var index = this.table.rowManager.getRowIndex(this); - + this.detatchModules(); - + this.table.rowManager.deleteRow(this, blockRedraw); - + this.deleteCells(); - + this.initialized = false; this.heightInitialized = false; this.element = false; - + this.dispatch("row-deleted", this); } - + detatchModules(){ this.dispatch("row-deleting", this); } - + deleteCells(){ var cellCount = this.cells.length; - + for(let i = 0; i < cellCount; i++){ this.cells[0].delete(); } } - + wipe(){ this.detatchModules(); 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 = {}; } - + getGroup(){ return this.modules.group || false; } - + //////////////// Object Generation ///////////////// getComponent(){ if(!this.component){ this.component = new RowComponent(this); } - + return this.component; } } \ No newline at end of file diff --git a/src/js/core/tools/Alert.js b/src/js/core/tools/Alert.js new file mode 100644 index 000000000..01c3f04d1 --- /dev/null +++ b/src/js/core/tools/Alert.js @@ -0,0 +1,63 @@ +import CoreFeature from '../CoreFeature.js'; +import Helpers from './Helpers.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.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(){ + 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/src/js/core/tools/ComponentFunctionBinder.js b/src/js/core/tools/ComponentFunctionBinder.js index 05db4f0da..6cf023c97 100644 --- a/src/js/core/tools/ComponentFunctionBinder.js +++ b/src/js/core/tools/ComponentFunctionBinder.js @@ -12,14 +12,14 @@ export default class ComponentFunctionBinder{ } if(this.bindings[type][funcName]){ - console.warn("Unable to bind component handler, a matching function name is already bound", type, funcName, hanlder) + 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]){ + 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("_")){ @@ -27,4 +27,4 @@ export default class ComponentFunctionBinder{ } } } -} \ No newline at end of file +} diff --git a/src/js/core/tools/DataLoader.js b/src/js/core/tools/DataLoader.js index f4e253c5f..4fca744ee 100644 --- a/src/js/core/tools/DataLoader.js +++ b/src/js/core/tools/DataLoader.js @@ -4,55 +4,11 @@ export default class DataLoader extends CoreFeature{ constructor(table){ super(table); - this.loaderElement = this.createLoaderElement(); //loader message div - this.msgElement = this.createMsgElement(); //message element - this.loadingElement = null; - this.errorElement = null; - - this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request + this.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request this.loading = false; } - initialize(){ - var template; - - this.loaderElement.appendChild(this.msgElement); - - if(this.table.options.dataLoaderLoading){ - if(typeof this.table.options.dataLoaderLoading == "string"){ - template = document.createElement('template'); - template.innerHTML = this.table.options.dataLoaderLoading.trim(); - this.loadingElement = template.firstElementChild; - }else{ - this.loadingElement = this.table.options.dataLoaderLoading; - } - } - - if(this.table.options.dataLoaderError){ - if(typeof this.table.options.dataLoaderError == "string"){ - template = document.createElement('template'); - template.innerHTML = this.table.options.dataLoaderError.trim(); - this.errorElement = template.firstElementChild; - }else{ - this.errorElement = this.table.options.dataLoaderError; - } - } - } - - createLoaderElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-loader"); - return el; - } - - createMsgElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-loader-msg"); - el.setAttribute("role", "alert"); - - return el; - } + initialize(){} load(data, params, config, replace, silent){ var requestNo = ++this.requestOrder; @@ -68,7 +24,7 @@ export default class DataLoader extends CoreFeature{ this.loading = true; if(!silent){ - this.showLoader(); + this.alertLoader(); } //get params for request @@ -86,7 +42,7 @@ export default class DataLoader extends CoreFeature{ var rowData = this.chain("data-loaded", response, null, response); if(requestNo == this.requestOrder){ - this.hideLoader(); + this.clearAlert(); if(rowData !== false){ this.dispatchExternal("dataLoaded", rowData); @@ -100,11 +56,11 @@ export default class DataLoader extends CoreFeature{ this.dispatchExternal("dataLoadError", error); if(!silent){ - this.showError(); + this.alertError(); } setTimeout(() => { - this.hideLoader(); + this.clearAlert(); }, this.table.options.dataLoaderErrorTimeout); }) .finally(() => { @@ -146,47 +102,19 @@ export default class DataLoader extends CoreFeature{ this.requestOrder++; } - showLoader(){ + alertLoader(){ var shouldLoad = typeof this.table.options.dataLoader === "function" ? this.table.options.dataLoader() : this.table.options.dataLoader; if(shouldLoad){ - this.hideLoader(); - - while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild); - - this.msgElement.classList.remove("tabulator-error"); - this.msgElement.classList.add("tabulator-loading"); - - if(this.loadingElement){ - this.msgElement.appendChild(this.loadingElement); - }else{ - this.msgElement.innerHTML = this.langText("data|loading"); - } - - this.table.element.appendChild(this.loaderElement); + this.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText("data|loading")); } } - showError(){ - this.hideLoader(); - - while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild); - this.msgElement.classList.remove("tabulator-loading"); - this.msgElement.classList.add("tabulator-error"); - - if(this.errorElement){ - this.msgElement.appendChild(this.errorElement); - }else{ - this.msgElement.innerHTML = this.langText("data|error"); - } - - this.table.element.appendChild(this.loaderElement); + alertError(){ + this.table.alertManager.alert(this.table.options.dataLoaderError || this.langText("data|error"), "error"); } - - hideLoader(){ - if(this.loaderElement.parentNode){ - this.loaderElement.parentNode.removeChild(this.loaderElement); - } + clearAlert(){ + this.table.alertManager.clear(); } } \ No newline at end of file diff --git a/src/js/core/tools/InteractionMonitor.js b/src/js/core/tools/InteractionMonitor.js index 8c0c62ab6..3245d4a75 100644 --- a/src/js/core/tools/InteractionMonitor.js +++ b/src/js/core/tools/InteractionMonitor.js @@ -88,7 +88,7 @@ export default class InteractionManager extends CoreFeature { if(this.pseudoTrackers[key].target !== target){ if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, target); + this.dispatch(key + "-mouseleave", e, this.pseudoTrackers[key].target); } this.pseudoMouseLeave(key, e); diff --git a/src/js/core/tools/ModuleBinder.js b/src/js/core/tools/ModuleBinder.js index 34d6c14a7..b00cafa6b 100644 --- a/src/js/core/tools/ModuleBinder.js +++ b/src/js/core/tools/ModuleBinder.js @@ -2,23 +2,23 @@ import * as coreModules from '../modules/core.js'; import TableRegistry from './TableRegistry.js'; export default class ModuleBinder { - + constructor(tabulator, modules){ this.bindStaticFuctionality(tabulator); this.bindModules(tabulator, coreModules, true); - + if(modules){ this.bindModules(tabulator, modules); } } - + bindStaticFuctionality(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){ @@ -34,65 +34,72 @@ export default class ModuleBinder { 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 orderedMods = [], + 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){ - orderedMods.push(module); + if(mod.moduleInitOrder < 0){ + orderedStartMods.push(module); + }else{ + orderedEndMods.push(module); + } + }else{ unOrderedMods.push(module); } } } - - orderedMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - - this.modulesRegular = orderedMods.concat(unOrderedMods); + + 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/src/js/core/tools/Popup.js b/src/js/core/tools/Popup.js new file mode 100644 index 000000000..4500a7b05 --- /dev/null +++ b/src/js/core/tools/Popup.js @@ -0,0 +1,251 @@ +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.renderedCallback = null; + + this.visible = false; + + this.element.classList.add("tabulator-popup-container"); + + this.blurEvent = this.hide.bind(this, false); + this.escEvent = this._escapeCheck.bind(this); + } + + _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; + } + + return {x, y, offset}; + } + + show(origin, position){ + var x, y, parentEl, parentOffset, containerOffset, coords; + + 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; + + 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(() => { + 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); + window.addEventListener("resize", this.blurEvent); + document.body.addEventListener("keydown", this.escEvent); + }, 100); + + this.blurCallback = callback; + } + + return this; + } + + _escapeCheck(e){ + if(e.keyCode == 27){ + this.hide(); + } + } + + hide(silent = false){ + if(this.visible){ + if(this.blurable){ + document.body.removeEventListener("keydown", this.escEvent); + document.body.removeEventListener("click", this.blurEvent); + document.body.removeEventListener("contextmenu", this.blurEvent); + window.removeEventListener("resize", this.blurEvent); + this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); + this.unsubscribe("cell-editing", this.blurEvent); + } + + 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(); + } + } + + 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/src/js/modules/ColumnCalcs/ColumnCalcs.js b/src/js/modules/ColumnCalcs/ColumnCalcs.js index 3cc9fa1ab..a73493020 100644 --- a/src/js/modules/ColumnCalcs/ColumnCalcs.js +++ b/src/js/modules/ColumnCalcs/ColumnCalcs.js @@ -212,7 +212,7 @@ class ColumnCalcs extends Module{ if(this.botInitialized){ this.botInitialized = false; - this.table.footerManager.remove(this.botElement); + this.footerRemove(this.botElement); changed = true; } @@ -230,7 +230,7 @@ class ColumnCalcs extends Module{ initializeBottomRow(){ if(!this.botInitialized){ - this.table.footerManager.prepend(this.botElement); + this.footerPrepend(this.botElement); this.botInitialized = true; } } diff --git a/src/js/modules/Edit/Edit.js b/src/js/modules/Edit/Edit.js index 9c65cfa22..de468a905 100644 --- a/src/js/modules/Edit/Edit.js +++ b/src/js/modules/Edit/Edit.js @@ -404,13 +404,7 @@ class Edit extends Module{ cellEl = cell.getElement(); - if(cancel){ - if(cell.column.modules.validate && this.table.modExists("validate")){ - this.table.modules.validate.cellValidate(cell); - } - }else{ - cellEl.classList.remove("tabulator-validation-fail"); - } + this.dispatch("edit-editor-clear", cell, cancel); cellEl.classList.remove("tabulator-editing"); @@ -543,14 +537,10 @@ class Edit extends Module{ return; } - //handle successfull value change + //handle successful value change function success(value){ if(self.currentCell === cell){ - var valid = true; - - if(cell.column.modules.validate && self.table.modExists("validate") && self.table.options.validationMode != "manual"){ - valid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value); - } + var valid = self.chain("edit-success", [cell, value], true, true); if(valid === true || self.table.options.validationMode === "highlight"){ self.clearEditor(); @@ -568,19 +558,11 @@ class Edit extends Module{ cell.setValue(value, true); - if(valid !== true){ - element.classList.add("tabulator-validation-fail"); - self.table.externalEvents.dispatch("validationFailed", cell.getComponent(), value, valid); - return false; - } - - return true; + return valid === true; }else{ self.invalidEdit = true; - element.classList.add("tabulator-validation-fail"); self.focusCellNoEvent(cell, true); rendered(); - self.table.externalEvents.dispatch("validationFailed", cell.getComponent(), value, valid); return false; } }else{ @@ -705,9 +687,7 @@ class Edit extends Module{ if(cell.modules.edit && cell.modules.edit.edited){ cell.modules.edit.edited = false; - if(cell.modules.validate){ - cell.modules.validate.invalid = false; - } + this.dispatch("edit-edited-clear", cell); } editIndex = this.editedCells.indexOf(cell); diff --git a/src/js/modules/Edit/List.js b/src/js/modules/Edit/List.js new file mode 100644 index 000000000..140d0b854 --- /dev/null +++ b/src/js/modules/Edit/List.js @@ -0,0 +1,997 @@ +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._getSelf; + + this.filterTimeout = null; + this.filtered = false; + this.typing = false; + + this.values = []; + this.popup = null; + + this.listIteration = 0; + + this.blurable = true; + + this.actions = { + success:success, + cancel:cancel + } + + this._deprecationCheck(); + this._initializeValue(); + + onRendered(this._onRendered.bind(this)); + } + + _deprecationCheck(){ + if(this.params.listItemFormatter){ + console.warn("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"); + } + + if(this.params.sortValuesList){ + console.warn("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"); + } + + if(this.params.searchFunc){ + console.warn("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"); + } + + if(this.params.searchingPlaceholder){ + console.warn("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.join(","); + this.headerFilterInitialListGen(); + } + } + + _onRendered(){ + var cellEl = this.cell.getElement(); + + function clickStop(e){ + e.stopPropagation(); + } + + this.input.style.height = "100%"; + this.input.focus({preventScroll: true}); + + + cellEl.addEventListener("click", clickStop); + + setTimeout(() => { + cellEl.removeEventListener("click", clickStop); + }, 1000) + } + + _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" || typeof 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 && this.popup){ + this.popup.hide(); + } + } + + _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 + 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); + } + } + + _preventBlur(){ + this.blurable = false; + + setTimeout(function(){ + this.blurable = true; + }, 10); + } + + ////////////////////////////////////// + //////// Keyboard Navigation ///////// + ////////////////////////////////////// + + _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){ + e.stopImmediatePropagation(); + e.stopPropagation(); + e.preventDefault(); + } + + _keyEnter(e){ + if(this.focusedItem){ + this._chooseItem(this.focusedItem); + }else{ + this._cancel(); + } + } + + _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.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){ + 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 itteration = ++ 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(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 === itteration){ + return this._parseList(responseValues); + }else{ + return Promise.reject(itteration); + } + }); + }else{ + return Promise.resolve(this._parseList(values)) + } + } + + _addPlaceholder(contents){ + var placeholder = document.createElement("div"); + + if(typeof contents === "function"){ + contents = contents(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); + }); + + 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; + var term = this.input.value; + var results = []; + + 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){ + var term = String(term).toLowerCase(); + + if(label !== null || typeof label !== "undefined"){ + if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase(term).indexOf() > -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){ + this.popup.hideOnBlur(this._resolveValue.bind(this, true)); + } + } + } + + _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; + + 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 = this.initialValues[0]; + + 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; + } + } + +} \ No newline at end of file diff --git a/src/js/modules/Edit/defaults/editors.js b/src/js/modules/Edit/defaults/editors.js index 6cdfcde37..fe9561b68 100644 --- a/src/js/modules/Edit/defaults/editors.js +++ b/src/js/modules/Edit/defaults/editors.js @@ -3,6 +3,7 @@ import textarea from './editors/textarea.js'; import number from './editors/number.js'; import range from './editors/range.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'; @@ -14,6 +15,7 @@ export default { number:number, range:range, select:select, + list:list, autocomplete:autocomplete, star:star, progress:progress, diff --git a/src/js/modules/Edit/defaults/editors/autocomplete.js b/src/js/modules/Edit/defaults/editors/autocomplete.js index 98306de4a..712c349bc 100644 --- a/src/js/modules/Edit/defaults/editors/autocomplete.js +++ b/src/js/modules/Edit/defaults/editors/autocomplete.js @@ -1,452 +1,12 @@ -import Helpers from '../../../../core/tools/Helpers.js'; -import maskInput from '../../inputMask.js'; +import List from '../../List.js'; -//autocomplete export default function(cell, onRendered, success, cancel, editorParams){ - var self = this, - cellEl = cell.getElement(), - initialValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : ""), - input = document.createElement("input"), - listEl = document.createElement("div"), - allItems = [], - displayItems = [], - values = [], - currentItem = false, - blurable = true, - uniqueColumnValues = false; - //style input - input.setAttribute("type", "search"); + console.warn("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"); - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; + editorParams.autocomplete = true; - 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]); - } - } - } + var list = new List(this, cell, onRendered, success, cancel, editorParams); - //style list element - listEl.classList.add("tabulator-edit-select-list"); - - listEl.addEventListener("mousedown", function(e){ - blurable = false; - - setTimeout(function(){ - blurable = true; - }, 10); - }); - - - function genUniqueColumnValues(){ - if(editorParams.values === true){ - uniqueColumnValues = getUniqueColumnValues(); - }else if(typeof editorParams.values === "string"){ - uniqueColumnValues = getUniqueColumnValues(editorParams.values); - } - } - - function getUniqueColumnValues(field){ - var output = {}, - data = self.table.getData(), - column; - - if(field){ - column = self.table.columnManager.getColumnByField(field); - }else{ - column = cell.getColumn()._getSelf(); - } - - if(column){ - data.forEach(function(row){ - var val = column.getFieldValue(row); - - if(val !== null && typeof val !== "undefined" && val !== ""){ - output[val] = true; - } - }); - - if(editorParams.sortValuesList){ - if(editorParams.sortValuesList == "asc"){ - output = Object.keys(output).sort(); - }else{ - output = Object.keys(output).sort().reverse(); - } - }else{ - output = Object.keys(output); - } - }else{ - console.warn("unable to find matching column to create autocomplete lookup list:", field); - } - - - return output; - } - - function filterList(term, intialLoad){ - var matches = [], - values, items, searchEl; - - //lookup base values list - if(uniqueColumnValues){ - values = uniqueColumnValues; - }else{ - values = editorParams.values || []; - } - - if(editorParams.searchFunc){ - matches = editorParams.searchFunc(term, values); - - if(matches instanceof Promise){ - - addNotice(typeof editorParams.searchingPlaceholder !== "undefined" ? editorParams.searchingPlaceholder : "Searching..."); - - matches.then((result) => { - fillListIfNotEmpty(parseItems(result), intialLoad); - }).catch((err) => { - console.err("error in autocomplete search promise:", err); - }); - - }else{ - fillListIfNotEmpty(parseItems(matches), intialLoad); - } - }else{ - items = parseItems(values); - - if(term === ""){ - if(editorParams.showListOnEmpty){ - matches = items; - } - }else{ - items.forEach(function(item){ - if(item.value !== null || typeof item.value !== "undefined"){ - if(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){ - matches.push(item); - } - } - }); - } - - fillListIfNotEmpty(matches, intialLoad); - } - } - - function addNotice(notice){ - var searchEl = document.createElement("div"); - - clearList(); - - if(notice !== false){ - searchEl.classList.add("tabulator-edit-select-list-notice"); - searchEl.tabIndex = 0; - - if(notice instanceof Node){ - searchEl.appendChild(notice); - }else{ - searchEl.innerHTML = notice; - } - - listEl.appendChild(searchEl); - } - } - - function parseItems(inputValues){ - var itemList = []; - - if(Array.isArray(inputValues)){ - inputValues.forEach(function(value){ - - var item = {}; - - if(typeof value === "object"){ - item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label; - item.value = value.value; - }else{ - item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value; - item.value = value; - } - - itemList.push(item); - }); - }else{ - for(var key in inputValues){ - var item = { - title:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key], - value:key, - }; - - itemList.push(item); - } - } - - return itemList; - } - - function clearList(){ - while(listEl.firstChild) listEl.removeChild(listEl.firstChild); - } - - function fillListIfNotEmpty(items, intialLoad){ - if(items.length){ - fillList(items, intialLoad); - }else{ - if(editorParams.emptyPlaceholder){ - addNotice(editorParams.emptyPlaceholder); - } - } - } - - function fillList(items, intialLoad){ - var current = false; - - clearList(); - - displayItems = items; - - displayItems.forEach(function(item){ - var el = item.element; - - if(!el){ - el = document.createElement("div"); - el.classList.add("tabulator-edit-select-list-item"); - el.tabIndex = 0; - el.innerHTML = item.title; - - el.addEventListener("click", function(e){ - setCurrentItem(item); - chooseItem(); - }); - - el.addEventListener("mousedown", function(e){ - blurable = false; - - setTimeout(function(){ - blurable = true; - }, 10); - }); - - item.element = el; - - if(intialLoad && item.value == initialValue){ - input.value = item.title; - item.element.classList.add("active"); - current = true; - } - - if(item === currentItem){ - item.element.classList.add("active"); - current = true; - } - } - - listEl.appendChild(el); - }); - - if(!current){ - setCurrentItem(false); - } - } - - function chooseItem(){ - hideList(); - - if(currentItem){ - if(initialValue !== currentItem.value){ - initialValue = currentItem.value; - input.value = currentItem.title; - success(currentItem.value); - }else{ - cancel(); - } - }else{ - if(editorParams.freetext){ - initialValue = input.value; - success(input.value); - }else{ - if(editorParams.allowEmpty && input.value === ""){ - initialValue = input.value; - success(input.value); - }else{ - cancel(); - } - } - } - } - - function showList(){ - if(!listEl.parentNode){ - while(listEl.firstChild) listEl.removeChild(listEl.firstChild); - - var offset = Helpers.elOffset(cellEl); - - listEl.style.minWidth = cellEl.offsetWidth + "px"; - - listEl.style.top = (offset.top + cellEl.offsetHeight) + "px"; - listEl.style.left = offset.left + "px"; - document.body.appendChild(listEl); - } - } - - function setCurrentItem(item, showInputValue){ - if(currentItem && currentItem.element){ - currentItem.element.classList.remove("active"); - } - - currentItem = item; - - if(item && item.element){ - item.element.classList.add("active"); - } - - if(item && item.element && item.element.scrollIntoView){ - item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'}); - } - } - - function hideList(){ - if(listEl.parentNode){ - listEl.parentNode.removeChild(listEl); - } - - removeScrollListener(); - } - - - function cancelItem(){ - hideList(); - cancel(); - } - - function removeScrollListener() { - self.table.rowManager.element.removeEventListener("scroll", cancelItem); - } - - //allow key based navigation - input.addEventListener("keydown", function(e){ - var index; - - switch(e.keyCode){ - case 38: //up arrow - index = displayItems.indexOf(currentItem); - - if(vertNav == "editor" || (vertNav == "hybrid" && index)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index > 0){ - setCurrentItem(displayItems[index - 1]); - }else{ - setCurrentItem(false); - } - } - break; - - case 40: //down arrow - - index = displayItems.indexOf(currentItem); - - if(vertNav == "editor" || (vertNav == "hybrid" && index < displayItems.length - 1)){ - - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index < displayItems.length - 1){ - if(index == -1){ - setCurrentItem(displayItems[0]); - }else{ - setCurrentItem(displayItems[index + 1]); - } - } - } - break; - - - case 37: //left arrow - case 39: //right arrow - e.stopImmediatePropagation(); - e.stopPropagation(); - // e.preventDefault(); - break; - - case 13: //enter - chooseItem(); - break; - - case 27: //escape - cancelItem(); - break; - - case 36: //home - case 35: //end - //prevent table navigation while using input element - e.stopImmediatePropagation(); - break; - } - }); - - input.addEventListener("keyup", function(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: - filterList(input.value); - } - - }); - - input.addEventListener("search", function(e){ - filterList(input.value); - }); - - input.addEventListener("blur", function(e){ - if(blurable){ - chooseItem(); - } - }); - - input.addEventListener("focus", function(e){ - var value = initialDisplayValue; - genUniqueColumnValues(); - showList(); - input.value = value; - filterList(value, true); - }); - - - onRendered(function(){ - input.style.height = "100%"; - input.focus({preventScroll: true}); - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - setTimeout(() => { - this.table.rowManager.element.addEventListener("scroll", cancelItem); - }, 10); - - genUniqueColumnValues(); - input.value = initialDisplayValue; - filterList(initialDisplayValue, true); - - return input; -}; \ No newline at end of file + return list.input; +} \ No newline at end of file diff --git a/src/js/modules/Edit/defaults/editors/input.js b/src/js/modules/Edit/defaults/editors/input.js index 36560c7a2..3cdc7769f 100644 --- a/src/js/modules/Edit/defaults/editors/input.js +++ b/src/js/modules/Edit/defaults/editors/input.js @@ -28,6 +28,10 @@ export default function(cell, onRendered, success, cancel, editorParams){ onRendered(function(){ input.focus({preventScroll: true}); input.style.height = "100%"; + + if(editorParams.selectContents){ + input.select(); + } }); function onChange(e){ diff --git a/src/js/modules/Edit/defaults/editors/list.js b/src/js/modules/Edit/defaults/editors/list.js new file mode 100644 index 000000000..6efecd291 --- /dev/null +++ b/src/js/modules/Edit/defaults/editors/list.js @@ -0,0 +1,7 @@ +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/src/js/modules/Edit/defaults/editors/number.js b/src/js/modules/Edit/defaults/editors/number.js index 12a1145ac..64bd963e2 100644 --- a/src/js/modules/Edit/defaults/editors/number.js +++ b/src/js/modules/Edit/defaults/editors/number.js @@ -51,6 +51,10 @@ export default function(cell, onRendered, success, cancel, editorParams){ //submit new value on blur input.addEventListener("blur", blurFunc); + + if(editorParams.selectContents){ + input.select(); + } }); function onChange(){ diff --git a/src/js/modules/Edit/defaults/editors/select.js b/src/js/modules/Edit/defaults/editors/select.js index 4b590238e..571e02737 100644 --- a/src/js/modules/Edit/defaults/editors/select.js +++ b/src/js/modules/Edit/defaults/editors/select.js @@ -1,589 +1,10 @@ -import Helpers from '../../../../core/tools/Helpers.js'; +import List from '../../List.js'; -//dropdown select editor export default function(cell, onRendered, success, cancel, editorParams){ - var self = this, - cellEl = cell.getElement(), - initialValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : []), - input = document.createElement("input"), - listEl = document.createElement("div"), - multiselect = editorParams.multiselect, - dataItems = [], - currentItem = {}, - displayItems = [], - currentItems = [], - blurable = true, - blockListShow = false, - searchWord = "", - searchWordTimeout = null; - if(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === "object" && !editorParams.values)){ - console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"); - editorParams = {values:editorParams}; - } + console.warn("The select editor has been deprecated, please use the new list editor"); - function getUniqueColumnValues(field){ - var output = {}, - data = self.table.getData(), - column; + var list = new List(this, cell, onRendered, success, cancel, editorParams); - if(field){ - column = self.table.columnManager.getColumnByField(field); - }else{ - column = cell.getColumn()._getSelf(); - } - - if(column){ - data.forEach(function(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); - } - - return Object.keys(output); - } - - function parseItems(inputValues, curentValues){ - var dataList = []; - var displayList = []; - - function processComplexListItem(item){ - var item = { - label:item.label, - value:item.value, - itemParams:item.itemParams, - elementAttributes: item.elementAttributes, - element:false, - }; - - // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){ - // setCurrentItem(item); - // } - - if(curentValues.indexOf(item.value) > -1){ - setItem(item); - } - - dataList.push(item); - displayList.push(item); - - return item; - } - - if(typeof inputValues == "function"){ - inputValues = inputValues(cell); - } - - if(Array.isArray(inputValues)){ - inputValues.forEach(function(value){ - var item; - - if(typeof value === "object"){ - - if(value.options){ - item = { - label:value.label, - group:true, - itemParams:value.itemParams, - elementAttributes:value.elementAttributes, - element:false, - }; - - displayList.push(item); - - value.options.forEach(function(item){ - processComplexListItem(item); - }); - }else{ - processComplexListItem(value); - } - - }else{ - - item = { - label:value, - value:value, - element:false, - }; - - // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){ - // setCurrentItem(item); - // } - - if(curentValues.indexOf(item.value) > -1){ - setItem(item); - } - - dataList.push(item); - displayList.push(item); - } - }); - }else{ - for(var key in inputValues){ - var item = { - label:inputValues[key], - value:key, - element:false, - }; - - // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){ - // setCurrentItem(item); - // } - - if(curentValues.indexOf(item.value) > -1){ - setItem(item); - } - - dataList.push(item); - displayList.push(item); - } - } - - if(editorParams.sortValuesList){ - dataList.sort((a, b) => { - return a.label < b.label ? -1 : (a.label > b.label ? 1 : 0); - }); - - displayList.sort((a, b) => { - return a.label < b.label ? -1 : (a.label > b.label ? 1 : 0); - }); - - if(editorParams.sortValuesList !== "asc"){ - dataList.reverse(); - displayList.reverse(); - } - } - - dataItems = dataList; - displayItems = displayList; - - fillList(); - } - - function fillList(){ - while(listEl.firstChild) listEl.removeChild(listEl.firstChild); - - displayItems.forEach(function(item){ - - var el = item.element; - - if(!el){ - el = document.createElement("div"); - item.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label; - if(item.group){ - el.classList.add("tabulator-edit-select-list-group"); - el.tabIndex = 0; - el.innerHTML = item.label === "" ? " " : item.label; - }else{ - el.classList.add("tabulator-edit-select-list-item"); - el.tabIndex = 0; - el.innerHTML = item.label === "" ? " " : item.label; - - el.addEventListener("click", function(){ - blockListShow = true; - - setTimeout(() => { - blockListShow = false; - }, 10); - - // setCurrentItem(item); - // chooseItem(); - if(multiselect){ - toggleItem(item); - input.focus(); - }else{ - chooseItem(item); - } - - }); - - // if(item === currentItem){ - // el.classList.add("active"); - // } - - if(currentItems.indexOf(item) > -1){ - el.classList.add("active"); - } - } - - if(item.elementAttributes && typeof item.elementAttributes == "object"){ - for (let key in item.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - el.setAttribute(key, input.getAttribute(key) + item.elementAttributes["+" + key]); - }else{ - el.setAttribute(key, item.elementAttributes[key]); - } - } - } - el.addEventListener("mousedown", function(){ - blurable = false; - - setTimeout(function(){ - blurable = true; - }, 10); - }); - - item.element = el; - - - } - - listEl.appendChild(el); - }); - } - - - function setCurrentItem(item, active){ - - if(!multiselect && currentItem && currentItem.element){ - currentItem.element.classList.remove("active"); - } - - if(currentItem && currentItem.element){ - currentItem.element.classList.remove("focused"); - } - - currentItem = item; - - if(item.element){ - item.element.classList.add("focused"); - if(active){ - item.element.classList.add("active"); - } - } - - if(item && item.element && item.element.scrollIntoView){ - item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'}); - } - } - - - // function chooseItem(){ - // hideList(); - - // if(initialValue !== currentItem.value){ - // initialValue = currentItem.value; - // success(currentItem.value); - // }else{ - // cancel(); - // } - // } - - function setItem(item) { - var index = currentItems.indexOf(item); - - if(index == -1){ - currentItems.push(item); - setCurrentItem(item, true); - } - - fillInput(); - } - - function unsetItem(index) { - var item = currentItems[index]; - - if(index > -1){ - currentItems.splice(index, 1); - if(item.element){ - item.element.classList.remove("active"); - } - } - } - - function toggleItem(item) { - if(!item){ - item = currentItem; - } - - var index = currentItems.indexOf(item); - - if(index > -1){ - unsetItem(index); - }else{ - if(multiselect !== true && currentItems.length >= multiselect){ - unsetItem(0); - } - - setItem(item); - } - - fillInput(); - - } - - function chooseItem(item){ - hideList(); - - if(!item){ - item = currentItem; - } - - if(item){ - input.value = item.label; - success(item.value); - } - - initialDisplayValue = [item.value]; - } - - - function chooseItems(silent){ - if(!silent){ - hideList(); - } - - var output = []; - - currentItems.forEach((item) => { - output.push(item.value); - }); - - initialDisplayValue = output; - - success(output); - } - - function fillInput(){ - var output = []; - - currentItems.forEach((item) => { - output.push(item.label); - }); - - input.value = output.join(", "); - - if(self.currentCell === false){ - chooseItems(true); - } - } - - - function unsetItems() { - - var len = currentItems.length; - - for(let i = 0; i < len; i++){ - unsetItem(0); - } - } - - function cancelItem(){ - hideList(); - cancel(); - } - - function showList(){ - currentItems = []; - - if(!listEl.parentNode){ - if(editorParams.values === true){ - parseItems(getUniqueColumnValues(), initialDisplayValue); - }else if(typeof editorParams.values === "string"){ - parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue); - }else{ - parseItems(editorParams.values || [], initialDisplayValue); - } - - - var offset = Helpers.elOffset(cellEl); - - listEl.style.minWidth = cellEl.offsetWidth + "px"; - - listEl.style.top = (offset.top + cellEl.offsetHeight) + "px"; - listEl.style.left = offset.left + "px"; - - - listEl.addEventListener("mousedown", function(e){ - blurable = false; - - setTimeout(function(){ - blurable = true; - }, 10); - }); - - document.body.appendChild(listEl); - } - } - - function hideList(){ - if(listEl.parentNode){ - listEl.parentNode.removeChild(listEl); - } - - removeScrollListener(); - } - - function removeScrollListener() { - self.table.rowManager.element.removeEventListener("scroll", cancelItem); - } - - function scrollTovalue(char){ - - clearTimeout(searchWordTimeout); - - var character = String.fromCharCode(event.keyCode).toLowerCase(); - searchWord += character.toLowerCase(); - - var match = dataItems.find((item) => { - return typeof item.label !== "undefined" && item.label.toLowerCase().startsWith(searchWord); - }); - - if(match){ - setCurrentItem(match, !multiselect); - } - - searchWordTimeout = setTimeout(() => { - searchWord = ""; - }, 800) - } - - //style input - input.setAttribute("type", "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - input.style.cursor = "default"; - input.readOnly = (this.currentCell != false); - - 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 initialValue !== "undefined" || initialValue === null ? initialValue : ""; - - // if(editorParams.values === true){ - // parseItems(getUniqueColumnValues(), initialValue); - // }else if(typeof editorParams.values === "string"){ - // parseItems(getUniqueColumnValues(editorParams.values), initialValue); - // }else{ - // parseItems(editorParams.values || [], initialValue); - // } - - input.addEventListener("search", function(e){ - if(!input.value){ - unsetItems(); - chooseItems(); - } - }); - - //allow key based navigation - input.addEventListener("keydown", function(e){ - var index; - - switch(e.keyCode){ - case 38: //up arrow - index = dataItems.indexOf(currentItem); - - if(vertNav == "editor" || (vertNav == "hybrid" && index)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index > 0){ - setCurrentItem(dataItems[index - 1], !multiselect); - } - } - break; - - case 40: //down arrow - index = dataItems.indexOf(currentItem); - - if(vertNav == "editor" || (vertNav == "hybrid" && index < dataItems.length - 1)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index < dataItems.length - 1){ - if(index == -1){ - setCurrentItem(dataItems[0], !multiselect); - }else{ - setCurrentItem(dataItems[index + 1], !multiselect); - } - } - } - break; - - case 37: //left arrow - case 39: //right arrow - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - break; - - case 13: //enter - // chooseItem(); - - if(multiselect){ - toggleItem(); - }else{ - chooseItem(); - } - - break; - - case 27: //escape - cancelItem(); - break; - - case 9: //tab - break; - - default: - if(self.currentCell === false){ - e.preventDefault(); - } - - if(e.keyCode >= 38 && e.keyCode <= 90){ - scrollTovalue(e.keyCode); - } - } - }); - - input.addEventListener("blur", function(e){ - if(blurable){ - if(multiselect){ - chooseItems(); - }else{ - cancelItem(); - } - } - }); - - input.addEventListener("focus", function(e){ - if(!blockListShow){ - showList(); - } - }); - - //style list element - listEl = document.createElement("div"); - listEl.classList.add("tabulator-edit-select-list"); - - onRendered(function(){ - input.style.height = "100%"; - input.focus({preventScroll: true}); - }); - - setTimeout(() => { - this.table.rowManager.element.addEventListener("scroll", cancelItem); - }, 10); - - return input; -}; \ No newline at end of file + return list.input; +} \ No newline at end of file diff --git a/src/js/modules/Edit/defaults/editors/textarea.js b/src/js/modules/Edit/defaults/editors/textarea.js index 88ec148ff..fe86ff28c 100644 --- a/src/js/modules/Edit/defaults/editors/textarea.js +++ b/src/js/modules/Edit/defaults/editors/textarea.js @@ -39,6 +39,10 @@ export default function(cell, onRendered, success, cancel, editorParams){ input.scrollHeight; input.style.height = input.scrollHeight + "px"; cell.getRow().normalizeHeight(); + + if(editorParams.selectContents){ + input.select(); + } }); function onChange(e){ diff --git a/src/js/modules/Edit/defaults/editors/tickCross.js b/src/js/modules/Edit/defaults/editors/tickCross.js index eea5e8dc9..a2ffbaba0 100644 --- a/src/js/modules/Edit/defaults/editors/tickCross.js +++ b/src/js/modules/Edit/defaults/editors/tickCross.js @@ -4,7 +4,9 @@ export default function(cell, onRendered, success, cancel, editorParams){ input = document.createElement("input"), tristate = editorParams.tristate, indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue, - indetermState = false; + indetermState = false, + trueValueSet = Object.keys(editorParams).includes("trueValue"), + falseValueSet = Object.keys(editorParams).includes("falseValue"); input.setAttribute("type", "checkbox"); input.style.marginTop = "5px"; @@ -34,13 +36,23 @@ export default function(cell, onRendered, success, cancel, editorParams){ }); } - input.checked = value === true || value === "true" || value === "True" || value === 1; + input.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === "true" || value === "True" || value === 1); onRendered(function(){ input.focus(); }); function setValue(blur){ + var checkedValue = input.checked; + + if(trueValueSet && checkedValue){ + checkedValue = editorParams.trueValue; + }else if(falseValueSet && !checkedValue){ + checkedValue = editorParams.falseValue; + }else{ + checkedValue = checkedValue; + } + if(tristate){ if(!blur){ if(input.checked && !indetermState){ @@ -50,17 +62,17 @@ export default function(cell, onRendered, success, cancel, editorParams){ return indetermValue; }else{ indetermState = false; - return input.checked; + return checkedValue; } }else{ if(indetermState){ return indetermValue; }else{ - return input.checked; + return checkedValue; } } }else{ - return input.checked; + return checkedValue; } } diff --git a/src/js/modules/Filter/Filter.js b/src/js/modules/Filter/Filter.js index 4c4b40ec4..4dd4337e4 100644 --- a/src/js/modules/Filter/Filter.js +++ b/src/js/modules/Filter/Filter.js @@ -266,11 +266,12 @@ class Filter extends Module{ } self.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}}; - }else{ delete self.headerFilters[field]; } + column.modules.filter.value = value; + filterChangeCheck = JSON.stringify(self.headerFilters); if(self.prevHeaderFilterChangeCheck !== filterChangeCheck){ @@ -300,6 +301,8 @@ class Filter extends Module{ field = column.getField(), filterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params; + column.modules.filter.value = initialValue; + //handle aborted edit function cancel(){} @@ -522,7 +525,7 @@ class Filter extends Module{ //programmatically get value of header filter getHeaderFilterValue(column){ if(column.modules.filter && column.modules.filter.headerElement){ - return column.modules.filter.headerElement.value; + return column.modules.filter.value; } else { console.warn("Column Filter Error - No header filter set on column:", column.getField()); } @@ -821,7 +824,7 @@ class Filter extends Module{ activeRowComponents = []; if(this.subscribedExternal("dataFiltering")){ - this.dispatchExternal("dataFiltering", this.getFilters()); + this.dispatchExternal("dataFiltering", this.getFilters(true)); } if(this.table.options.filterMode !== "remote" && (this.filterList.length || Object.keys(this.headerFilters).length)){ @@ -842,7 +845,7 @@ class Filter extends Module{ activeRowComponents.push(row.getComponent()); }); - this.dispatchExternal("dataFiltered", this.getFilters(), activeRowComponents); + this.dispatchExternal("dataFiltered", this.getFilters(true), activeRowComponents); } return activeRows; diff --git a/src/js/modules/Format/defaults/formatters/datetime.js b/src/js/modules/Format/defaults/formatters/datetime.js index 4e5eb2791..e91114585 100644 --- a/src/js/modules/Format/defaults/formatters/datetime.js +++ b/src/js/modules/Format/defaults/formatters/datetime.js @@ -6,17 +6,23 @@ export default function(cell, formatterParams, onRendered){ var value = cell.getValue(); if(typeof DT != "undefined"){ - var newDatetime = inputFormat === "iso" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat); + var newDatetime; - if(newDatetime.isValid){ + 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.shiftTimezone(formatterParams.timezone); + newDatetime = newDatetime.setZone(formatterParams.timezone); } return newDatetime.toFormat(outputFormat); }else{ - if(invalid === true || !value){ return value; }else if(typeof invalid === "function"){ diff --git a/src/js/modules/Format/defaults/formatters/datetimediff.js b/src/js/modules/Format/defaults/formatters/datetimediff.js index d069daaac..4a5ebe113 100644 --- a/src/js/modules/Format/defaults/formatters/datetimediff.js +++ b/src/js/modules/Format/defaults/formatters/datetimediff.js @@ -9,12 +9,19 @@ export default function (cell, formatterParams, onRendered) { var value = cell.getValue(); if(typeof DT != "undefined"){ - - var newDatetime = inputFormat === "iso" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat); + 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 moment.duration(newDatetime.diff(date)).humanize(suffix); + return newDatetime.diff(date, unit).toHuman() + (suffix ? " " + suffix : ""); }else{ return parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? " " + suffix : ""); } diff --git a/src/js/modules/Format/defaults/formatters/link.js b/src/js/modules/Format/defaults/formatters/link.js index bf3c8debc..a47c965ac 100644 --- a/src/js/modules/Format/defaults/formatters/link.js +++ b/src/js/modules/Format/defaults/formatters/link.js @@ -6,9 +6,20 @@ export default function(cell, formatterParams, onRendered){ 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 = data[formatterParams.labelField]; + label = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data); } if(formatterParams.label){ diff --git a/src/js/modules/Format/defaults/formatters/money.js b/src/js/modules/Format/defaults/formatters/money.js index 9a73efd64..5af2a8460 100644 --- a/src/js/modules/Format/defaults/formatters/money.js +++ b/src/js/modules/Format/defaults/formatters/money.js @@ -25,10 +25,12 @@ export default function(cell, formatterParams, onRendered){ integer = number[0]; decimal = number.length > 1 ? decimalSym + number[1] : ""; - rgx = /(\d+)(\d{3})/; + if (formatterParams.thousand !== false) { + rgx = /(\d+)(\d{3})/; - while (rgx.test(integer)){ - integer = integer.replace(rgx, "$1" + thousandSym + "$2"); + while (rgx.test(integer)){ + integer = integer.replace(rgx, "$1" + thousandSym + "$2"); + } } return after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal; diff --git a/src/js/modules/Format/defaults/formatters/tickCross.js b/src/js/modules/Format/defaults/formatters/tickCross.js index d82b433c0..31686addc 100644 --- a/src/js/modules/Format/defaults/formatters/tickCross.js +++ b/src/js/modules/Format/defaults/formatters/tickCross.js @@ -3,10 +3,11 @@ export default function(cell, formatterParams, onRendered){ 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((truthy && value) || (value === true || value === "true" || value === "True" || value === 1 || value === "1")){ + 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{ diff --git a/src/js/modules/FrozenColumns/FrozenColumns.js b/src/js/modules/FrozenColumns/FrozenColumns.js index 02beaaccb..18afb9087 100644 --- a/src/js/modules/FrozenColumns/FrozenColumns.js +++ b/src/js/modules/FrozenColumns/FrozenColumns.js @@ -39,7 +39,12 @@ class FrozenColumns extends Module{ this.subscribe("row-layout-after", this.layoutRow.bind(this)); this.subscribe("table-layout", this.layout.bind(this)); this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); + this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); this.subscribe("columns-loading", this.reset.bind(this)); + + this.subscribe("column-add", this.reinitializeColumns.bind(this)); + this.subscribe("column-delete", 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)); @@ -56,6 +61,14 @@ class FrozenColumns extends Module{ layoutCell(cell){ this.layoutElement(cell.element, cell.column) } + + reinitializeColumns(){ + this.reset(); + + this.table.columnManager.columnsByIndex.forEach((column) => { + this.initializeColumn(column); + }); + } //initialize specific column initializeColumn(column){ @@ -83,8 +96,6 @@ class FrozenColumns extends Module{ } frozenCheck(column){ - var frozen = false; - 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"); } @@ -94,8 +105,6 @@ class FrozenColumns extends Module{ }else{ return column.definition.frozen; } - - return frozen; } //quick layout to smooth horizontal scrolling @@ -246,11 +255,24 @@ class FrozenColumns extends Module{ //layout columns appropriately layout(){ + var visibleRows = [], + otherRows = []; + if(this.active && !this.blocked){ //calculate row padding this.calcMargins(); - - this.table.rowManager.getDisplayRows().forEach((row) =>{ + + //calculate left columns + this.layoutColumnPosition(); + + visibleRows = this.table.rowManager.getVisibleRows(); + otherRows = this.table.rowManager.getDisplayRows().filter(row => !visibleRows.includes(row)); + + otherRows.forEach((row) =>{ + row.deinitialize(); + }); + + visibleRows.forEach((row) =>{ if(row.type === "row"){ this.layoutRow(row); } @@ -258,12 +280,12 @@ class FrozenColumns extends Module{ this.layoutCalcRows(); - //calculate left columns - this.layoutColumnPosition(true); + } } layoutRow(row){ + // console.trace("row") var rowEl = row.getElement(); rowEl.style.paddingLeft = this.leftMargin; diff --git a/src/js/modules/HtmlTableImport/HtmlTableImport.js b/src/js/modules/HtmlTableImport/HtmlTableImport.js index fc4733550..4811e33e1 100644 --- a/src/js/modules/HtmlTableImport/HtmlTableImport.js +++ b/src/js/modules/HtmlTableImport/HtmlTableImport.js @@ -16,7 +16,11 @@ class HtmlTableImport extends Module{ tableElementCheck(){ if(this.table.originalElement && this.table.originalElement.tagName === "TABLE"){ - this.parseTable(); + 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."); + } } } diff --git a/src/js/modules/Menu/Menu.js b/src/js/modules/Menu/Menu.js index 7bb733d0d..5132c0df7 100644 --- a/src/js/modules/Menu/Menu.js +++ b/src/js/modules/Menu/Menu.js @@ -1,5 +1,4 @@ import Module from '../../core/Module.js'; -import Helpers from '../../core/tools/Helpers.js'; class Menu extends Module{ @@ -7,69 +6,44 @@ class Menu extends Module{ super(table); this.menuContainer = null; - this.menuElements = []; - this.blurEvent = this.hideMenu.bind(this); - this.escEvent = this.escMenu.bind(this); this.nestedMenuBlock = false; - this.positionReversedX = false; this.currentComponent = null; + this.rootPopup = null; this.columnSubscribers = {}; + this.registerTableOption("menuContainer", undefined); //deprecated + this.registerTableOption("rowContextMenu", false); this.registerTableOption("rowClickMenu", false); this.registerTableOption("groupContextMenu", false); this.registerTableOption("groupClickMenu", false); - this.registerTableOption("menuContainer", false); this.registerColumnOption("headerContextMenu"); this.registerColumnOption("headerClickMenu"); this.registerColumnOption("headerMenu"); + this.registerColumnOption("headerMenuIcon"); this.registerColumnOption("contextMenu"); this.registerColumnOption("clickMenu"); + } initialize(){ - this.lookupMenuContainer(); - + this.deprecationCheck(); this.initializeRowWatchers(); this.initializeGroupWatchers(); this.subscribe("column-init", this.initializeColumn.bind(this)); } - - lookupMenuContainer(){ - - this.menuContainer = this.table.options.menuContainer; - - if(typeof this.menuContainer === "string"){ - this.menuContainer = document.querySelector(this.menuContainer); - - if(!this.menuContainer){ - console.warn("Menu Error - no container element found matching selector:", this.table.options.menuContainer , "(defaulting to document body)"); - } - }else if (this.menuContainer === true){ - this.menuContainer = this.table.element; - } - - if(this.menuContainer && !this.checkMenuContainerIsParent(this.menuContainer)){ - this.menuContainer = false; - console.warn("Menu Error - container element does not contain this table:", this.table.options.menuContainer , "(defaulting to document body)"); - } - - if(!this.menuContainer){ - this.menuContainer = document.body; - } - } - - checkMenuContainerIsParent(container, element = this.table.element){ - if(container === element){ - return true; - }else{ - return element.parentNode ? this.checkMenuContainerIsParent(container, element.parentNode) : false; + + deprecationCheck(){ + if(typeof this.table.options.menuContainer !== "undefined"){ + console.warn("Use of the menuContainer option is now deprecated. Please use the popupContainer option instead"); + + this.table.options.popupContainer = this.table.options.menuContainer; } - } + } initializeRowWatchers(){ if(this.table.options.rowContextMenu){ @@ -127,11 +101,25 @@ class Menu extends Module{ } initializeColumnHeaderMenu(column){ - var headerMenuEl; + var icon = column.definition.headerMenuIcon, + headerMenuEl; headerMenuEl = document.createElement("span"); - headerMenuEl.classList.add("tabulator-header-menu-button"); - headerMenuEl.innerHTML = "⋮"; + 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(); @@ -170,15 +158,16 @@ class Menu extends Module{ component = component._row; } - menu = typeof menu == "function" ? menu.call(this.table, component.getComponent(), e) : menu; + menu = typeof menu == "function" ? menu.call(this.table, e, component.getComponent()) : menu; this.loadMenu(e, component, menu); } - loadMenu(e, component, menu, parentEl){ - var touch = !(e instanceof MouseEvent); + loadMenu(e, component, menu, parentEl, parentPopup){ + var touch = !(e instanceof MouseEvent), + menuEl = document.createElement("div"), + popup; - var menuEl = document.createElement("div"); menuEl.classList.add("tabulator-menu"); if(!touch){ @@ -193,7 +182,7 @@ class Menu extends Module{ if(!parentEl){ if(this.nestedMenuBlock){ //abort if child menu already open - if(this.isOpen()){ + if(this.rootPopup){ return; } }else{ @@ -202,8 +191,14 @@ class Menu extends Module{ }, 100) } - this.hideMenu(); - this.menuElements = []; + if(this.rootPopup){ + this.rootPopup.hide(); + } + + this.rootPopup = popup = this.popup(menuEl); + + }else{ + popup = parentPopup.child(menuEl); } menu.forEach((item) => { @@ -239,8 +234,7 @@ class Menu extends Module{ if(item.menu && item.menu.length){ itemEl.addEventListener("click", (e) => { e.stopPropagation(); - this.hideOldSubMenus(menuEl); - this.loadMenu(e, component, item.menu, itemEl); + this.loadMenu(e, component, item.menu, itemEl, popup); }); }else{ if(item.action){ @@ -260,118 +254,24 @@ class Menu extends Module{ }); menuEl.addEventListener("click", (e) => { - this.hideMenu(); + this.rootPopup.hide(); }); - this.menuElements.push(menuEl); - this.positionMenu(menuEl, parentEl, touch, e); - - this.currentComponent = component + popup.show(parentEl || e); - this.dispatchExternal("menuOpened", component.getComponent()) - } - - hideOldSubMenus(menuEl){ - var index = this.menuElements.indexOf(menuEl); - - if(index > -1){ - for(let i = this.menuElements.length - 1; i > index; i--){ - var el = this.menuElements[i]; + if(popup === this.rootPopup){ + this.rootPopup.hideOnBlur(() => { + this.rootPopup = null; - if(el.parentNode){ - el.parentNode.removeChild(el); + if(this.currentComponent){ + this.dispatchExternal("menuClosed", this.currentComponent.getComponent()); + this.currentComponent = null; } - - this.menuElements.pop(); - } - } - } - - positionMenu(element, parentEl, touch, e){ - var x, y, parentOffset; - - if(!parentEl){ - x = touch ? e.touches[0].pageX : e.pageX; - y = touch ? e.touches[0].pageY : e.pageY; - - if(this.menuContainer !== document.body){ - parentOffset = Helpers.elOffset(this.menuContainer); - - x -= parentOffset.left; - y -= parentOffset.top; - } - - this.positionReversedX = false; - }else{ - parentOffset = Helpers.elOffset(parentEl); - x = parentOffset.left + parentEl.offsetWidth; - y = parentOffset.top - 1; - } - - element.style.top = y + "px"; - element.style.left = x + "px"; - - setTimeout(() => { - 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); - window.addEventListener("resize", this.blurEvent); - document.body.addEventListener("keydown", this.escEvent); - }, 100); - - this.menuContainer.appendChild(element); - - //move menu to start on right edge if it is too close to the edge of the screen - if((x + element.offsetWidth) >= this.menuContainer.offsetWidth || this.positionReversedX){ - element.style.left = ""; - - if(parentEl){ - element.style.right = (this.menuContainer.offsetWidth - parentOffset.left) + "px"; - }else{ - element.style.right = (this.menuContainer.offsetWidth - x) + "px"; - } - - this.positionReversedX = true; - } - - //move menu to start on bottom edge if it is too close to the edge of the screen - if((y + element.offsetHeight) > this.menuContainer.offsetHeight) { - if(parentEl){ - element.style.top = (parseInt(element.style.top) - element.offsetHeight + parentEl.offsetHeight + 1) + "px"; - }else{ - element.style.top = (parseInt(element.style.top) - element.offsetHeight) + "px"; - } - } - } - - isOpen(){ - return !!this.menuElements.length; - } - - escMenu(e){ - if(e.keyCode == 27){ - this.hideMenu(); - } - } - - hideMenu(){ - this.menuElements.forEach((menuEl) => { - if(menuEl.parentNode){ - menuEl.parentNode.removeChild(menuEl); - } - }); - - document.body.removeEventListener("keydown", this.escEvent); - document.body.removeEventListener("click", this.blurEvent); - document.body.removeEventListener("contextmenu", this.blurEvent); - window.removeEventListener("resize", this.blurEvent); - this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); - this.unsubscribe("cell-editing", this.blurEvent); - - if(this.currentComponent){ - this.dispatchExternal("menuClosed", this.currentComponent.getComponent()); - this.currentComponent = null; + }); + + this.currentComponent = component; + + this.dispatchExternal("menuOpened", component.getComponent()) } } } diff --git a/src/js/modules/Mutator/Mutator.js b/src/js/modules/Mutator/Mutator.js index e518b770d..f6b446227 100644 --- a/src/js/modules/Mutator/Mutator.js +++ b/src/js/modules/Mutator/Mutator.js @@ -18,10 +18,12 @@ class Mutator extends Module{ 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)); @@ -125,6 +127,24 @@ class Mutator extends Module{ 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; } diff --git a/src/js/modules/Page/Page.js b/src/js/modules/Page/Page.js index 1fd8146e5..a265fece2 100644 --- a/src/js/modules/Page/Page.js +++ b/src/js/modules/Page/Page.js @@ -65,6 +65,7 @@ class Page extends Module{ 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)); @@ -145,6 +146,8 @@ class Page extends Module{ this.table.rowManager.getTableElement().removeChild(testElRow); } + + this.dispatchExternal("pageSizeChanged", this.size); this.generatePageSizeSelectList(); } @@ -441,12 +444,12 @@ class Page extends Module{ } } }else{ - this.table.footerManager.append(this.pageCounterElement); + this.footerAppend(this.pageCounterElement); } } - this.table.footerManager.append(this.element, this); + this.footerAppend(this.element); } this.page = this.table.options.paginationInitialPage; @@ -562,9 +565,10 @@ class Page extends Module{ if(size !== true){ size = parseInt(size); } - + if(size > 0){ this.size = size; + this.dispatchExternal("pageSizeChanged", size); } if(this.pageSizeSelect){ diff --git a/src/js/modules/Persistence/Persistence.js b/src/js/modules/Persistence/Persistence.js index f74578bac..7d3507f31 100644 --- a/src/js/modules/Persistence/Persistence.js +++ b/src/js/modules/Persistence/Persistence.js @@ -451,7 +451,7 @@ class Persistence extends Module{ Persistence.moduleName = "persistence"; -Persistence.moduleInitOrder = 1; +Persistence.moduleInitOrder = -10; //load defaults Persistence.readers = defaultReaders; diff --git a/src/js/modules/Popup/Popup.js b/src/js/modules/Popup/Popup.js new file mode 100644 index 000000000..2f432cf34 --- /dev/null +++ b/src/js/modules/Popup/Popup.js @@ -0,0 +1,194 @@ +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("groupContextPopup", false); + this.registerTableOption("groupClickPopup", false); + + this.registerColumnOption("headerContextPopup"); + this.registerColumnOption("headerClickPopup"); + this.registerColumnOption("headerPopup"); + this.registerColumnOption("headerPopupIcon"); + this.registerColumnOption("contextPopup"); + this.registerColumnOption("clickPopup"); + + } + + initialize(){ + this.initializeRowWatchers(); + this.initializeGroupWatchers(); + + this.subscribe("column-init", this.initializeColumn.bind(this)); + } + + 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)); + } + } + + 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)); + } + } + + initializeColumn(column){ + var options = ["headerContextPopup", "headerClickPopup"], + 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.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); + } + } + + 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){ + 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); + } + + loadPopup(e, component, contents, renderedCallback){ + 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); + } + + popup.show(e).hideOnBlur(() => { + this.dispatchExternal("popupClosed", component.getComponent()); + }); + + + + this.dispatchExternal("popupOpened", component.getComponent()) + } +} + +Popup.moduleName = "popup"; + +export default Popup; diff --git a/src/js/modules/ResizeColumns/ResizeColumns.js b/src/js/modules/ResizeColumns/ResizeColumns.js index 45237fc78..c1d93ceab 100644 --- a/src/js/modules/ResizeColumns/ResizeColumns.js +++ b/src/js/modules/ResizeColumns/ResizeColumns.js @@ -8,126 +8,154 @@ class ResizeColumns extends Module{ this.startColumn = false; this.startX = false; this.startWidth = false; + this.latestX = false; this.handle = null; - this.prevHandle = null; + this.initialNextColumn = null; + this.nextColumn = null; + this.initialized = false; this.registerColumnOption("resizable", true); + this.registerTableOption("resizableColumnFit", false); } initialize(){ - // if(this.table.options.resizableColumns){ - this.subscribe("cell-layout", this.layoutCellHandles.bind(this)); - this.subscribe("column-init", this.layoutColumnHeader.bind(this)); - // } + 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-delete", this.deInitializeComponent.bind(this)); + this.subscribe("column-height", this.resizeHandle.bind(this)); + + this.initialized = true; + } + } + + layoutCellHandles(cell){ if(cell.row.type === "row"){ - this.initializeColumn("cell", cell.column, cell.element); + this.deInitializeComponent(cell); + this.initializeColumn("cell", cell, cell.column, cell.element); } } layoutColumnHeader(column){ - this.initializeColumn("header", column, column.element); + 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); + } + } + + reinitializeColumn(column){ + column.cells.forEach((cell) => { + if(cell.modules.resize && cell.modules.resize.handleEl){ + cell.element.after(cell.modules.resize.handleEl); + } + }); + + if(column.modules.resize && column.modules.resize.handleEl){ + column.element.after(column.modules.resize.handleEl); + } } - initializeColumn(type, column, element){ + initializeColumn(type, component, column, element){ var self = this, variableHeight = false, - mode = column.definition.resizable; + mode = column.definition.resizable, + config = {}, + nearestColumn = column.getLastColumn(); //set column resize mode if(type === "header"){ variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight; - column.modules.resize = {variableHeight:variableHeight}; + config = {variableHeight:variableHeight}; } - if(mode === true || mode == type){ + if((mode === true || mode == type) && this._checkResizability(nearestColumn)){ - var handle = document.createElement('div'); + var handle = document.createElement('span'); handle.className = "tabulator-col-resize-handle"; - - var prevHandle = document.createElement('div'); - prevHandle.className = "tabulator-col-resize-handle prev"; - handle.addEventListener("click", function(e){ e.stopPropagation(); }); var handleDown = function(e){ - var nearestColumn = column.getLastColumn(); - - if(nearestColumn && self._checkResizability(nearestColumn)){ - self.startColumn = column; - self._mouseDown(e, nearestColumn, handle); - } + self.startColumn = column; + self.initialNextColumn = self.nextColumn = nearestColumn.nextColumn(); + self._mouseDown(e, nearestColumn, handle); }; handle.addEventListener("mousedown", handleDown); handle.addEventListener("touchstart", handleDown, {passive: true}); - //reszie column on double click - handle.addEventListener("dblclick", function(e){ - var col = column.getLastColumn(), - oldWidth; + //resize column on double click + handle.addEventListener("dblclick", (e) => { + var oldWidth = nearestColumn.getWidth(); - if(col && self._checkResizability(col)){ - oldWidth = col.getWidth(); - - e.stopPropagation(); - col.reinitializeWidth(true); - - if(oldWidth !== col.getWidth()){ - self.dispatch("column-resized", col); - self.table.externalEvents.dispatch("columnResized", col.getComponent()); - } - } - }); - - - prevHandle.addEventListener("click", function(e){ e.stopPropagation(); - }); - - var prevHandleDown = function(e){ - var nearestColumn, colIndex, prevColumn; - - nearestColumn = column.getFirstColumn(); + nearestColumn.reinitializeWidth(true); - if(nearestColumn){ - colIndex = self.table.columnManager.findColumnIndex(nearestColumn); - prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false; - - if(prevColumn && self._checkResizability(prevColumn)){ - self.startColumn = column; - self._mouseDown(e, prevColumn, prevHandle); - } + if(oldWidth !== nearestColumn.getWidth()){ + self.dispatch("column-resized", nearestColumn); + self.table.externalEvents.dispatch("columnResized", nearestColumn.getComponent()); } - }; + }); - prevHandle.addEventListener("mousedown", prevHandleDown); - prevHandle.addEventListener("touchstart", prevHandleDown, {passive: true}); + config.handleEl = handle; - //resize column on double click - prevHandle.addEventListener("dblclick", function(e){ - var nearestColumn, colIndex, prevColumn; - - nearestColumn = column.getFirstColumn(); - - if(nearestColumn){ - colIndex = self.table.columnManager.findColumnIndex(nearestColumn); - prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false; - - if(prevColumn && self._checkResizability(prevColumn)){ - e.stopPropagation(); - prevColumn.reinitializeWidth(true); - } - } - }); + if(element.parentNode){ + 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; - element.appendChild(handle); - element.appendChild(prevHandle); + 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; } } @@ -139,14 +167,42 @@ class ResizeColumns extends Module{ var self = this; self.table.element.classList.add("tabulator-block-select"); - + function mouseMove(e){ - // self.table.columnManager.tempScrollBlock(); + 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){ - column.setWidth(self.startWidth - ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX)); - }else{ - column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX)); + 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.renderer.rerenderColumns(true); @@ -174,7 +230,7 @@ class ResizeColumns extends Module{ handle.removeEventListener("touchend", mouseUp); self.table.element.classList.remove("tabulator-block-select"); - + if(self.startWidth !== column.getWidth()){ self.dispatch("column-resized", column); self.table.externalEvents.dispatch("columnResized", column.getComponent()); @@ -189,6 +245,7 @@ class ResizeColumns extends Module{ } 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); diff --git a/src/js/modules/Sort/defaults/sorters/datetime.js b/src/js/modules/Sort/defaults/sorters/datetime.js index 241f9d89b..9cb5f2379 100644 --- a/src/js/modules/Sort/defaults/sorters/datetime.js +++ b/src/js/modules/Sort/defaults/sorters/datetime.js @@ -6,8 +6,21 @@ export default function(a, b, aRow, bRow, column, dir, params){ emptyAlign = 0; if(typeof DT != "undefined"){ - a = format === "iso" ? DT.fromISO(String(a)) : DT.fromFormat(String(a), format); - b = format === "iso" ? DT.fromISO(String(b)) : DT.fromFormat(String(b), format); + if(DT.isDateTime(a)){ + a = a; + }else if(format === "iso"){ + a = DT.fromISO(String(a)); + }else{ + a = DT.fromFormat(String(a), format); + } + + if(DT.isDateTime(b)){ + b = b; + }else if(format === "iso"){ + b = DT.fromISO(String(b)); + }else{ + b = DT.fromFormat(String(b), format); + } if(!a.isValid){ emptyAlign = !b.isValid ? 0 : -1; diff --git a/src/js/modules/Tooltip/Tooltip.js b/src/js/modules/Tooltip/Tooltip.js new file mode 100644 index 000000000..4c26b6dbb --- /dev/null +++ b/src/js/modules/Tooltip/Tooltip.js @@ -0,0 +1,132 @@ +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.deprecationCheck(); + + this.subscribe("column-init", this.initializeColumn.bind(this)); + } + + deprecationCheck(){ + if(typeof this.table.options.tooltipGenerationMode !== "undefined"){ + console.warn("Use of the tooltipGenerationMode option is now deprecated. 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 === "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/src/js/modules/Validate/Validate.js b/src/js/modules/Validate/Validate.js index 69c309995..9363ef828 100644 --- a/src/js/modules/Validate/Validate.js +++ b/src/js/modules/Validate/Validate.js @@ -3,184 +3,222 @@ 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; + 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)){ invalid.push(cell.getComponent()); } }); - + return invalid.length ? invalid : true; } - + /////////////////////////////////// ////////// Row Functions ////////// /////////////////////////////////// - + rowValidate(row){ var invalid = []; - + row.cells.forEach((cell) => { if(!this.cellValidate(cell)){ 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); break; - + case "function": return this._buildValidator(value); break; - + case "object": return this._buildValidator(value.type, value.parameters); break; } } - + _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; @@ -192,71 +230,69 @@ class Validate extends Module{ }; } } - + validate(validators, cell, value){ var self = this, - valid = [], + failedValidators = [], invalidIndex = this.invalidCells.indexOf(cell); - + if(validators){ validators.forEach((item) => { if(!item.func.call(self, cell.getComponent(), value, item.params)){ - valid.push({ + failedValidators.push({ type:item.type, parameters:item.params }); } }); } - - valid = valid.length ? valid : true; - + if(!cell.modules.validate){ cell.modules.validate = {}; } - - if(valid === true){ + + 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 = true; - + 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 valid; + + 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); } diff --git a/src/scss/tabulator.scss b/src/scss/tabulator.scss index 645a9ad07..8eae7d048 100644 --- a/src/scss/tabulator.scss +++ b/src/scss/tabulator.scss @@ -40,21 +40,21 @@ $footerActiveColor:#d00 !default; //footer bottom active text color //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{ @@ -62,39 +62,39 @@ $footerActiveColor:#d00 !default; //footer bottom active text color } } } - + &[tabulator-layout="fitDataTable"]{ display: inline-block; } - + &.tabulator-block-select{ user-select: none; } - + //column header containing element .tabulator-header{ position:relative; box-sizing: border-box; - + width:100%; - + border-bottom:1px solid $headerSeperatorColor; 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; - + &.tabulator-header-hidden{ display:none; } - + //individual column header element .tabulator-col{ display:inline-block; @@ -105,72 +105,72 @@ $footerActiveColor:#d00 !default; //footer bottom active text color text-align:left; vertical-align: bottom; overflow: hidden; - + &.tabulator-moving{ position: absolute; border:1px solid $headerSeperatorColor; background:darken($headerBackgroundColor, 10%); pointer-events: none; } - + //hold content of column header .tabulator-col-content{ box-sizing:border-box; position: relative; padding:4px; - + //header menu button - .tabulator-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; - + //element to hold title editor .tabulator-title-editor{ box-sizing: border-box; width: 100%; - + border:1px solid #999; - + padding:1px; - + background: #fff; } - - .tabulator-header-menu-button + .tabulator-title-editor{ + + .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; @@ -179,31 +179,24 @@ $footerActiveColor:#d00 !default; //footer bottom active text color 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; } } - - //hide left resize handle on first column - &:first-child{ - .tabulator-col-resize-handle.prev{ - display: none; - } - } - + //header filter containing element .tabulator-header-filter{ position: relative; @@ -211,16 +204,16 @@ $footerActiveColor:#d00 !default; //footer bottom active text color 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; @@ -228,45 +221,45 @@ $footerActiveColor:#d00 !default; //footer bottom active text color } } } - + //styling child elements for sortable columns &.tabulator-sortable{ .tabulator-col-title{ padding-right:25px; } - + &:hover{ cursor:pointer; background-color:darken($headerBackgroundColor, 10%); } - + &[aria-sort="none"]{ .tabulator-col-content .tabulator-col-sorter{ color: $sortArrowInactive; - + .tabulator-arrow{ border-top: none; border-bottom: 6px solid $sortArrowInactive; } } } - + &[aria-sort="asc"]{ .tabulator-col-content .tabulator-col-sorter{ color: $sortArrowActive; - + .tabulator-arrow{ border-top: none; border-bottom: 6px solid $sortArrowActive; - + } } } - + &[aria-sort="desc"]{ .tabulator-col-content .tabulator-col-sorter{ color: $sortArrowActive; - + .tabulator-arrow{ border-bottom: none; border-top: 6px solid $sortArrowActive; @@ -275,40 +268,40 @@ $footerActiveColor:#d00 !default; //footer bottom active text color } } } - - + + &.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; @@ -319,54 +312,54 @@ $footerActiveColor:#d00 !default; //footer bottom active text color } } } - + .tabulator-frozen{ display: inline-block; position: absolute; - + // background-color: inherit; - + z-index: 10; - + &.tabulator-frozen-left{ border-right:2px solid $rowBorderColor; } - + &.tabulator-frozen-right{ border-left:2px solid $rowBorderColor; } } - - + + .tabulator-calcs-holder{ box-sizing:border-box; min-width:600%; - + background:lighten($headerBackgroundColor, 5%) !important; - + .tabulator-row{ background:lighten($headerBackgroundColor, 5%) !important; - + .tabulator-col-resize-handle{ display: none; } } - + border-top:1px solid $rowBorderColor; border-bottom:1px solid $headerBorderColor; - + overflow: hidden; } - + .tabulator-frozen-rows-holder{ min-width:600%; - + &:empty{ display: none; } } } - + //scrolling element to hold table .tabulator-tableholder{ position:relative; @@ -374,38 +367,38 @@ $footerActiveColor:#d00 !default; //footer bottom active text color 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; - + &[tabulator-render-mode="virtual"]{ min-height:100%; min-width:100%; } - + width: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; @@ -414,26 +407,26 @@ $footerActiveColor:#d00 !default; //footer bottom active text color 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; } } } - + } } - + //footer element .tabulator-footer{ border-top:1px solid $footerSeperatorColor; @@ -443,63 +436,63 @@ $footerActiveColor:#d00 !default; //footer bottom active text color 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:calc(100% + 20px); - + text-align: left; - + background:lighten($footerBackgroundColor, 5%) !important; border-bottom:1px solid $rowBorderColor; border-top:1px solid $rowBorderColor; - + overflow: hidden; - + .tabulator-row{ 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; @@ -507,42 +500,42 @@ $footerActiveColor:#d00 !default; //footer bottom active text color 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){ &:hover{ cursor:pointer; @@ -552,62 +545,66 @@ $footerActiveColor:#d00 !default; //footer bottom active text color } } } - + //column resize handles .tabulator-col-resize-handle{ - position:absolute; - right:0; - top:0; - bottom:0; - width:5px; - - &.prev{ - left:0; - right:auto; - } - + position: relative; + display: inline-block; + width: 6px; + + margin-left: -3px; + margin-right: -3px; + + z-index: 10; + vertical-align: middle; + &: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-loader{ + .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-loader-msg{ + .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-loading{ + &.tabulator-alert-state-msg { border:4px solid #333; color:#000; } - + //error message - &.tabulator-error{ + &.tabulator-alert-state-error { border:4px solid #D00; color:#590000; } @@ -621,41 +618,41 @@ $footerActiveColor:#d00 !default; //footer bottom active text color box-sizing: border-box; min-height:$textSize + ($headerMargin * 2); background-color: $rowBackgroundColor; - - + + &.tabulator-row-even{ background-color: $rowAltBackgroundColor; } - + &.tabulator-selectable:hover{ background-color:$rowHoverBackground; cursor: pointer; } - + &.tabulator-selected{ background-color:$rowSelectedBackground; } - + &.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; } - + //row resize handles .tabulator-row-resize-handle{ position:absolute; @@ -663,53 +660,53 @@ $footerActiveColor:#d00 !default; //footer bottom active text color bottom:0; left:0; height:5px; - + &.prev{ top:0; bottom:auto; } - + &:hover{ cursor:ns-resize; } } - + .tabulator-frozen{ display: inline-block; position: absolute; - + background-color: inherit; - + z-index: 10; - + &.tabulator-frozen-left{ border-right:2px solid $rowBorderColor; } - + &.tabulator-frozen-right{ border-left:2px solid $rowBorderColor; } } - + .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; } @@ -717,7 +714,7 @@ $footerActiveColor:#d00 !default; //footer bottom active text color } } } - + //cell element .tabulator-cell{ display:inline-block; @@ -729,52 +726,46 @@ $footerActiveColor:#d00 !default; //footer bottom active text color white-space:nowrap; overflow:hidden; text-overflow:ellipsis; - + &.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; } } - - //hide left resize handle on first column - &:first-child{ - .tabulator-col-resize-handle.prev{ - display: none; - } - } - + //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%; @@ -784,140 +775,140 @@ $footerActiveColor:#d00 !default; //footer bottom active text color } } } - + .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; - + &: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; - + &:hover{ opacity:.7; } - + &.open{ .tabulator-responsive-collapse-toggle-close{ display:initial; } - + .tabulator-responsive-collapse-toggle-open{ display:none; } } - + .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; @@ -928,16 +919,16 @@ $footerActiveColor:#d00 !default; //footer bottom active text color padding-left:10px; background:#ccc; font-weight:bold; - + min-width: 100%; - + &:hover{ cursor:pointer; background-color:rgba(0,0,0,.1); } - + &.tabulator-group-visible{ - + .tabulator-arrow{ margin-right:10px; border-left: 6px solid transparent; @@ -945,33 +936,33 @@ $footerActiveColor:#d00 !default; //footer bottom active text color 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; @@ -984,135 +975,167 @@ $footerActiveColor:#d00 !default; //footer bottom active text color border-left: 6px solid $sortArrowActive; vertical-align:middle; } - + span{ margin-left:10px; color:#d00; } } - + } -.tabulator-menu{ +.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; } - + &: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-select-list{ - position: absolute; - display:inline-block; - box-sizing:border-box; - +.tabulator-edit-list{ max-height:200px; - - background:$rowBackgroundColor; - border:1px solid $rowBorderColor; - + font-size:$textSize; - + overflow-y:auto; -webkit-overflow-scrolling: touch; - - z-index: 10000; - - .tabulator-edit-select-list-item{ + + .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; } - + &:hover{ cursor:pointer; - + color:$rowBackgroundColor; background:$editBoxColor; } } - - .tabulator-edit-select-list-notice{ + + .tabulator-edit-list-placeholder{ padding:4px; - + color:$rowTextColor; text-align: center; } - - .tabulator-edit-select-list-group{ + + .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; + } } } @@ -1126,27 +1149,27 @@ $footerActiveColor:#d00 !default; //footer bottom active text color .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; @@ -1155,48 +1178,30 @@ $footerActiveColor:#d00 !default; //footer bottom active text color } } } - + .tabulator-row{ .tabulator-cell{ border-right:initial; border-left:1px solid $rowBorderColor; - - //hide left resize handle on first column - // &:first-child{ - // .tabulator-col-resize-handle.prev{ - // display: none; - // } - // } - + .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; } } } - - //column resize handles - .tabulator-col-resize-handle{ - position:absolute; - left:0; - right:auto; - - &.prev{ - right:0; - left:auto; - } - } + } @@ -1208,7 +1213,7 @@ $footerActiveColor:#d00 !default; //footer bottom active text color bottom:0; left:0; right:0; - + z-index: 10000; } @@ -1218,23 +1223,23 @@ body.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){ .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; @@ -1245,16 +1250,16 @@ body.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){ padding-left:10px; background:#ccc; font-weight:bold; - + min-width: 100%; - + &:hover{ cursor:pointer; background-color:rgba(0,0,0,.1); } - + &.tabulator-group-visible{ - + .tabulator-arrow{ margin-right:10px; border-left: 6px solid transparent; @@ -1262,43 +1267,43 @@ body.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){ 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; @@ -1311,76 +1316,76 @@ body.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){ 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; - + &: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; } } diff --git a/src/scss/themes/bootstrap/functions5.scss b/src/scss/themes/bootstrap/functions5.scss new file mode 100644 index 000000000..30539b393 --- /dev/null +++ b/src/scss/themes/bootstrap/functions5.scss @@ -0,0 +1,302 @@ +// 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/src/scss/themes/bootstrap/tabulator_bootstrap5.scss b/src/scss/themes/bootstrap/tabulator_bootstrap5.scss new file mode 100644 index 000000000..ab35c603b --- /dev/null +++ b/src/scss/themes/bootstrap/tabulator_bootstrap5.scss @@ -0,0 +1,546 @@ +@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 themeing +$headerBackgroundColor:$table-bg !default; //border to tabulator +$headerForegroundColor:inherit !default; //border to tabulator +$headerSeperatorColor:$table-border-color !default; //header bottom seperator color + +$cellPadding:12px !default; //padding round header + +//column header arrows +$sortArrowActive: #666 !default; +$sortArrowInactive: #bbb !default; + +//row themeing +$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 themeing +$footerBorderColor:$pagination-border-color !default; //footer border color +$footerSeperatorColor:$table-border-color !default; //footer bottom seperator 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 $headerSeperatorColor; + border-bottom:2px solid $headerSeperatorColor; + 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 $headerSeperatorColor; + } + } + + .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){ + &: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-border-color; + background-color: $table-bg; + color: $table-color; + + .tabulator-col{ + border-color: $table-border-color; + background-color: $table-bg; + color: $table-color; + } + } + } + + &.table{ + background-color: $table-bg; + + &:not(.thead-light) .tabulator-header{ + border-color: $table-border-color; + background-color: $table-bg; + color: $table-color; + + .tabulator-col{ + border-color: $table-border-color; + background-color: $table-bg; + color: $table-color; + } + } + + .tabulator-tableholder{ + color: $table-color; + } + + + .tabulator-row{ + border-color: $table-border-color; + background-color: $table-bg; + color: $table-color; + + &:hover{ + background-color: $table-border-color; + + .tabulator-cell{ + background-color: $table-hover-bg; + } + } + + &.tabulator-selected{ + background-color:$rowSelectedBackground; + } + } + + .tabulator-footer{ + border-color: $table-border-color !important; + + .tabulator-calcs-holder{ + border-color: $table-border-color !important; + background:$table-bg !important; + + .tabulator-row{ + border-color: $table-border-color !important; + background-color: $table-bg !important; + color: $table-color !important; + } + } + } + } + + &.table-striped{ + &:not(.table){ + .tabulator-row{ + &:nth-child(even){ + background-color: $rowAltBackgroundColor; + + &.tabulator-selected{ + background-color:$rowSelectedBackground; + } + + &.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; + } + } + } + } + } + + + //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{ + 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{ + 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); + } + } + + &: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/src/scss/themes/bootstrap/variables5.scss b/src/scss/themes/bootstrap/variables5.scss new file mode 100644 index 000000000..f33b804a1 --- /dev/null +++ b/src/scss/themes/bootstrap/variables5.scss @@ -0,0 +1,1641 @@ +// 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: transparent !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: rgba($black, $table-striped-bg-factor) !default; + +$table-active-color: $table-color !default; +$table-active-bg-factor: .1 !default; +$table-active-bg: rgba($black, $table-active-bg-factor) !default; + +$table-hover-color: $table-color !default; +$table-hover-bg-factor: .075 !default; +$table-hover-bg: rgba($black, $table-hover-bg-factor) !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/yarn.lock b/yarn.lock deleted file mode 100644 index 188ea707b..000000000 --- a/yarn.lock +++ /dev/null @@ -1,3157 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503" - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - -"@babel/core@^7.12.10": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.8.tgz#195b9f2bffe995d2c6c159e72fe525b4114e8c10" - dependencies: - "@babel/code-frame" "^7.15.8" - "@babel/generator" "^7.15.8" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.8" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.8" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.15.4", "@babel/generator@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.8.tgz#fa56be6b596952ceb231048cf84ee499a19c0cd1" - dependencies: - "@babel/types" "^7.15.6" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f" - dependencies: - "@babel/helper-explode-assignable-expression" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c" - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" - dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-get-function-arity@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-hoist-variables@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz#d8c0e75a87a52e374a8f25f855174786a09498b2" - dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - -"@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f" - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-wrap-function" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - -"@babel/helper-wrap-function@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7" - dependencies: - "@babel/helper-function-name" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.15.4", "@babel/parser@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - -"@babel/plugin-proposal-async-generator-functions@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz#a3100f785fab4357987c4223ab1b02b599048403" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-class-static-block@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.15.4" - -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-private-property-in-object@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5" - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" - -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-block-scoping@^7.15.3": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-classes@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-for-of@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" - dependencies: - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.15.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" - dependencies: - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - -"@babel/plugin-transform-parameters@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-spread@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz#79d5aa27f68d700449b2da07691dfa32d2f6d468" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/preset-env@^7.12.11": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.8.tgz#f527ce5bcb121cd199f6b502bf23e420b3ff8dba" - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4" - "@babel/plugin-proposal-async-generator-functions" "^7.15.8" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.15.4" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.15.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.15.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.15.3" - "@babel/plugin-transform-classes" "^7.15.4" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.15.4" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.15.4" - "@babel/plugin-transform-modules-systemjs" "^7.15.4" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.15.4" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.15.8" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.15.6" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.5" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.16.0" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/runtime@^7.8.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.4.4": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" - dependencies: - "@babel/helper-validator-identifier" "^7.14.9" - to-fast-properties "^2.0.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@rollup/plugin-babel@^5.2.2": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-node-resolve@^11.0.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - 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" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - -"@types/node@*": - version "16.11.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.1.tgz#2e50a649a50fc403433a14f829eface1a3443e97" - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - dependencies: - "@types/node" "*" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - -ajv@^6.12.3: - version "6.12.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" - 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" - -alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - dependencies: - color-convert "^2.0.1" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -array-find-index@^1.0.1, array-find-index@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - -aws4@^1.8.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - dependencies: - object.assign "^4.1.0" - -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.16.2" - -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - dependencies: - tweetnacl "^0.14.3" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - dependencies: - fill-range "^7.0.1" - -browserslist@^4.0.0, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.3: - version "4.19.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" - dependencies: - caniuse-lite "^1.0.30001286" - electron-to-chromium "^1.4.17" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286: - version "1.0.30001291" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001291.tgz#08a8d2cfea0b2cf2e1d94dd795942d0daef6108c" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -chalk@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - -colord@^2.0.1, colord@^2.6: - version "2.8.0" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.8.0.tgz#64fb7aa03de7652b5a39eee50271a104c2783b12" - -colorette@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - dependencies: - delayed-stream "~1.0.0" - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - -commenting@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/commenting/-/commenting-1.1.0.tgz#fae14345c6437b8554f30bc6aa6c1e1633033590" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-with-sourcemaps@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" - dependencies: - source-map "^0.6.1" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - dependencies: - safe-buffer "~5.1.1" - -core-js-compat@^3.16.0, core-js-compat@^3.16.2: - version "3.18.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.3.tgz#e0e7e87abc55efb547e7fa19169e45fa9df27a67" - dependencies: - browserslist "^4.17.3" - semver "7.0.0" - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-color-names@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-1.0.1.tgz#6ff7ee81a823ad46e020fa2fd6ab40a887e2ba67" - -css-declaration-sorter@^6.0.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2" - dependencies: - timsort "^0.3.0" - -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - -cssnano-preset-default@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz#359943bf00c5c8e05489f12dd25f3006f2c1cbd2" - dependencies: - css-declaration-sorter "^6.0.3" - cssnano-utils "^2.0.1" - postcss-calc "^8.0.0" - postcss-colormin "^5.2.0" - postcss-convert-values "^5.0.1" - postcss-discard-comments "^5.0.1" - postcss-discard-duplicates "^5.0.1" - postcss-discard-empty "^5.0.1" - postcss-discard-overridden "^5.0.1" - postcss-merge-longhand "^5.0.2" - postcss-merge-rules "^5.0.2" - postcss-minify-font-values "^5.0.1" - postcss-minify-gradients "^5.0.2" - postcss-minify-params "^5.0.1" - postcss-minify-selectors "^5.1.0" - postcss-normalize-charset "^5.0.1" - postcss-normalize-display-values "^5.0.1" - postcss-normalize-positions "^5.0.1" - postcss-normalize-repeat-style "^5.0.1" - postcss-normalize-string "^5.0.1" - postcss-normalize-timing-functions "^5.0.1" - postcss-normalize-unicode "^5.0.1" - postcss-normalize-url "^5.0.2" - postcss-normalize-whitespace "^5.0.1" - postcss-ordered-values "^5.0.2" - postcss-reduce-initial "^5.0.1" - postcss-reduce-transforms "^5.0.1" - postcss-svgo "^5.0.2" - postcss-unique-selectors "^5.0.1" - -cssnano-utils@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" - -cssnano@^5.0.1: - version "5.0.8" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.8.tgz#39ad166256980fcc64faa08c9bb18bb5789ecfa9" - dependencies: - cssnano-preset-default "^5.1.4" - is-resolvable "^1.1.0" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - dependencies: - css-tree "^1.1.2" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -debug@^4.1.0, debug@^4.1.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - dependencies: - ms "2.1.2" - -decamelize@^1.1.2, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - -define-properties@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - dependencies: - object-keys "^1.0.12" - -defined@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - dependencies: - path-type "^4.0.0" - -dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - -domhandler@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" - dependencies: - domelementtype "^2.2.0" - -domutils@^2.6.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -electron-to-chromium@^1.4.17: - version "1.4.24" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.24.tgz#9cf8a92d5729c480ee47ff0aa5555f57467ae2fa" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - -error-ex@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - dependencies: - is-arrayish "^0.2.1" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - dependencies: - reusify "^1.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - dependencies: - to-regex-range "^5.0.1" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - dependencies: - locate-path "^3.0.0" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gaze@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" - dependencies: - globule "^1.0.0" - -generic-names@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" - dependencies: - loader-utils "^1.1.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - dependencies: - is-glob "^4.0.1" - -glob@7.2.0, glob@^7.1.4: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - 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" - -glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - 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" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - -globby@^11.0.2: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - 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" - -globule@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.2.tgz#d8bdd9e9e4eef8f96e245999a5dee7eb5d8529c4" - dependencies: - glob "~7.1.1" - lodash "~4.17.10" - minimatch "~3.0.2" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - -graceful-fs@^4.2.0, graceful-fs@^4.2.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - -has-symbols@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - dependencies: - function-bind "^1.1.1" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - -icss-utils@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - -import-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - dependencies: - import-from "^3.0.0" - -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - dependencies: - resolve-from "^5.0.0" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - dependencies: - has "^1.0.3" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-glob@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - dependencies: - is-extglob "^2.1.1" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - -is-resolvable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -js-base64@^2.1.8, js-base64@^2.1.9: - version "2.6.4" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - dependencies: - minimist "^1.2.5" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -lilconfig@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -loader-utils@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - -lodash@4.17.21, lodash@^4.0.0, lodash@^4.17.15, lodash@~4.17.10: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - dependencies: - yallist "^4.0.0" - -magic-string@0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - dependencies: - sourcemap-codec "^1.4.4" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - -meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - dependencies: - mime-db "1.44.0" - -minimatch@^3.0.4, minimatch@~3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - -minipass@^3.0.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@1.0.4, mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - -mkdirp@^0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - dependencies: - minimist "^1.2.5" - -moment@2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - -nan@^2.13.2: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - -nanocolors@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6" - -nanoid@^3.1.22: - version "3.2.0" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" - -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.3" - nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" - rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" - which "^2.0.2" - -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - -node-sass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-5.0.0.tgz#4e8f39fbef3bac8d2dc72ebe3b539711883a78d2" - dependencies: - async-foreach "^0.1.3" - chalk "^1.1.1" - cross-spawn "^7.0.3" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - lodash "^4.17.15" - meow "^3.7.0" - mkdirp "^0.5.1" - nan "^2.13.2" - node-gyp "^7.1.0" - npmlog "^4.0.0" - request "^2.88.0" - sass-graph "2.2.5" - stdout-stream "^1.4.0" - "true-case-path" "^1.0.2" - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - -npmlog@^4.0.0, npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - dependencies: - boolbase "^1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-keys@^1.0.11, object-keys@^1.0.12: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - dependencies: - p-limit "^2.0.0" - -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - dependencies: - p-finally "^1.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - -package-name-regex@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/package-name-regex/-/package-name-regex-2.0.4.tgz#e2d446a168ce7a5e4b3b7538e49e012845425e87" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - -picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -postcss-calc@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" - dependencies: - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-colormin@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.0.tgz#2b620b88c0ff19683f3349f4cf9e24ebdafb2c88" - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - colord "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-convert-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz#4ec19d6016534e30e3102fdf414e753398645232" - dependencies: - postcss-value-parser "^4.1.0" - -postcss-discard-comments@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" - -postcss-discard-duplicates@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" - -postcss-discard-empty@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" - -postcss-discard-overridden@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" - -postcss-load-config@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.0.tgz#d39c47091c4aec37f50272373a6a648ef5e97829" - dependencies: - import-cwd "^3.0.0" - lilconfig "^2.0.3" - yaml "^1.10.2" - -postcss-merge-longhand@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz#277ada51d9a7958e8ef8cf263103c9384b322a41" - dependencies: - css-color-names "^1.0.1" - postcss-value-parser "^4.1.0" - stylehacks "^5.0.1" - -postcss-merge-rules@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz#d6e4d65018badbdb7dcc789c4f39b941305d410a" - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - cssnano-utils "^2.0.1" - postcss-selector-parser "^6.0.5" - vendors "^1.0.3" - -postcss-minify-font-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" - dependencies: - postcss-value-parser "^4.1.0" - -postcss-minify-gradients@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz#7c175c108f06a5629925d698b3c4cf7bd3864ee5" - dependencies: - colord "^2.6" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-minify-params@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz#371153ba164b9d8562842fdcd929c98abd9e5b6c" - dependencies: - alphanum-sort "^1.0.2" - browserslist "^4.16.0" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" - dependencies: - alphanum-sort "^1.0.2" - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - dependencies: - icss-utils "^5.0.0" - -postcss-modules@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.2.2.tgz#5e7777c5a8964ea176919d90b2e54ef891321ce5" - dependencies: - generic-names "^2.0.1" - 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" - -postcss-normalize-charset@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" - -postcss-normalize-display-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-positions@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" - dependencies: - postcss-value-parser "^4.1.0" - -postcss-normalize-repeat-style@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-string@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" - dependencies: - postcss-value-parser "^4.1.0" - -postcss-normalize-timing-functions@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-unicode@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" - dependencies: - browserslist "^4.16.0" - postcss-value-parser "^4.1.0" - -postcss-normalize-url@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz#ddcdfb7cede1270740cf3e4dfc6008bd96abc763" - dependencies: - is-absolute-url "^3.0.3" - normalize-url "^6.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-whitespace@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" - dependencies: - postcss-value-parser "^4.1.0" - -postcss-ordered-values@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-prettify@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/postcss-prettify/-/postcss-prettify-0.3.4.tgz#1ab97899bea34777e4fc18d8ca61f85807651843" - dependencies: - defined "1.0.0" - postcss "5.0.19" - -postcss-reduce-initial@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" - dependencies: - browserslist "^4.16.0" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.2.tgz#bc73c4ea4c5a80fbd4b45e29042c34ceffb9257f" - dependencies: - postcss-value-parser "^4.1.0" - svgo "^2.3.0" - -postcss-unique-selectors@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz#3be5c1d7363352eff838bd62b0b07a0abad43bfc" - dependencies: - alphanum-sort "^1.0.2" - postcss-selector-parser "^6.0.5" - uniqs "^2.0.0" - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - -postcss@5.0.19: - version "5.0.19" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.0.19.tgz#b6342a01dc75b8cab7e968afda96aefc67f888af" - dependencies: - js-base64 "^2.1.9" - source-map "^0.5.1" - supports-color "^3.1.2" - -postcss@^8.2.4: - version "8.2.13" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.13.tgz#dbe043e26e3c068e45113b1ed6375d2d37e2129f" - dependencies: - colorette "^1.2.2" - nanoid "^3.1.22" - source-map "^0.6.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - -promise.series@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - dependencies: - safe-buffer "^5.1.0" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -readable-stream@^2.0.1, readable-stream@^2.0.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - 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" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -regenerate-unicode-properties@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - dependencies: - "@babel/runtime" "^7.8.4" - -regexpu-core@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^9.0.0" - regjsgen "^0.5.2" - regjsparser "^0.7.0" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regjsgen@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - -regjsparser@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" - dependencies: - jsesc "~0.5.0" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request@^2.88.0, request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - -resolve@^1.10.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - dependencies: - path-parse "^1.0.6" - -resolve@^1.14.2, resolve@^1.19.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - dependencies: - glob "^7.1.3" - -rollup-plugin-license@^2.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-license/-/rollup-plugin-license-2.6.0.tgz#363a15bf2f86753942cb4936bbd65234696956f0" - dependencies: - commenting "1.1.0" - glob "7.2.0" - lodash "4.17.21" - magic-string "0.25.7" - mkdirp "1.0.4" - moment "2.29.1" - package-name-regex "2.0.4" - spdx-expression-validate "2.0.0" - spdx-satisfies "5.0.1" - -rollup-plugin-postcss@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.1.tgz#2856465b637ec02513676659aabf1ca3840f3af0" - 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" - -rollup-plugin-terser@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - dependencies: - estree-walker "^0.6.1" - -rollup@^2.36.1: - version "2.58.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb" - optionalDependencies: - fsevents "~2.3.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - -safe-identifier@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" - -safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - -sass-graph@2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" - dependencies: - glob "^7.0.0" - lodash "^4.0.0" - scss-tokenizer "^0.2.3" - yargs "^13.3.2" - -scss-tokenizer@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" - dependencies: - js-base64 "^2.1.8" - source-map "^0.4.2" - -"semver@2 || 3 || 4 || 5": - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - -semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - -semver@^7.3.2: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - dependencies: - lru-cache "^6.0.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - dependencies: - randombytes "^2.1.0" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - -signal-exit@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - -source-map-support@~0.5.20: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.0, source-map@^0.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - -spdx-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/spdx-compare/-/spdx-compare-1.0.0.tgz#2c55f117362078d7409e6d7b08ce70a857cd3ed7" - dependencies: - array-find-index "^1.0.2" - spdx-expression-parse "^3.0.0" - spdx-ranges "^2.0.0" - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-expression-validate@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-validate/-/spdx-expression-validate-2.0.0.tgz#25c9408e1c63fad94fff5517bb7101ffcd23350b" - dependencies: - spdx-expression-parse "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - -spdx-ranges@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/spdx-ranges/-/spdx-ranges-2.1.1.tgz#87573927ba51e92b3f4550ab60bfc83dd07bac20" - -spdx-satisfies@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/spdx-satisfies/-/spdx-satisfies-5.0.1.tgz#9feeb2524686c08e5f7933c16248d4fdf07ed6a6" - dependencies: - spdx-compare "^1.0.0" - spdx-expression-parse "^3.0.0" - spdx-ranges "^2.0.0" - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - -stdout-stream@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" - dependencies: - readable-stream "^2.0.1" - -string-hash@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - dependencies: - ansi-regex "^4.1.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -style-inject@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" - -stylehacks@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" - dependencies: - browserslist "^4.16.0" - postcss-selector-parser "^6.0.4" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^3.1.2: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - dependencies: - has-flag "^4.0.0" - -svgo@^2.3.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.7.0.tgz#e164cded22f4408fe4978f082be80159caea1e2d" - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - nanocolors "^0.1.12" - stable "^0.1.8" - -tar@^6.0.2: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -terser@^5.0.0: - version "5.9.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.20" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - dependencies: - is-number "^7.0.0" - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -"true-case-path@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" - dependencies: - glob "^7.1.2" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - -uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vendors@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - dependencies: - string-width "^1.0.2 || 2" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - -yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2"